あーる学習帳

自分が勉強したことや気になることなど、99%自分用です。コードを書いてるのでPCから閲覧を推奨。

PHP入門:仮想環境起動/終了のbatファイル、ビルトインサーバー、変数と定数

上司「お客さんから要望があったからゲーム作るかも。デザイン考えて」

(スペースキャット顔をする自分)

(この3年間ずっとデータベースをなんやかんやすることしかしてない)

 

今日もPHPをやっていきます。が、その前に仮想環境について。

昨日は仮想環境起動/終了のためのコマンドを復習しましたが、やっぱり何回も入力するのは面倒です。面倒なうえに間違えて「そんなフォルダないよ!!」と怒られることも多々あったので微弱なストレス。

そういうストレスを解消するため、仮想環境を起動/終了するためのコマンドのうちPowerShellで実行する部分を簡単にbatファイル化しました。それが以下の2つになります。

MyCentOS_Start.bat

cd C:\(フォルダ名)\MyVagrant\MyCentOS
vagrant up

pause

exit

MyCentOS_Exit.bat

cd C:\(フォルダ名)\MyVagrant\MyCentOS
vagrant halt

pause

exit

この2つのbatファイルを作成し、デスクトップに置いておきます。なお、念のためこのbatファイルは「管理者として実行する」という設定をプロパティでつけておきます。

なぜ文頭に「@echo off」をつけていないのかというと、本当に動いているかどうか不安だったのでシステム側が自動でつける部分も見たいと思ったからです。別にパソコンくんを信頼していないわけじゃないんだ、僕が不安なだけなんだ。

コマンドの流れはどちらも同じで、

①仮想環境のあるフォルダへ移動

②仮想環境を起動or終了

コマンドプロンプト一時停止(「続けるには何かキーを押して」を出す) 

④何か押されたらコマンドプロンプトを終了

というものです。たったこれだけで随分楽ができます。

参考にしたのは下記のページ。

qiita.com

Start.batを実行した後はPuTTYで仮想環境へログイン!そこも自動化出来たら楽だなぁと思いつつ、PuTTYはまだ慣れていないので…もし出来たとしても慣れるまではちゃんと自分でコマンドを打ちます。

 

脱線しましたが、PHPを今夜も学んでいきます!!

 

#3

#2で作成したindex.phpをブラウザに表示していく。

Webサーバーの設定が必要だが、今回はPHPが用意しているビルトインWebサーバーという仕組みを使う。

そのためにはローカル開発環境のIPが必要なので、PuTTYで以下のコマンドを実行。

ip a 

これだけ。するとPuTTYの画面がこのようになる。

f:id:R_de_aru:20180607204748p:plain

 赤枠で囲ったところがローカル開発環境のIP…になっているはず。

PHPでビルトインWebサーバーを起動するには以下のコマンドをPuTTYに入力する。

php -S (IP):(必要時にはポート番号) 

-SのSは大文字なので注意。今回は以下のようになる。

php -S 192.168.33.10:8000 

このコマンドを実行するとこうなる。

f:id:R_de_aru:20180607205313p:plain

青の枠が入力したコマンド、赤の枠が戻りで帰ってきたアドレス。

ちなみに緑の枠はポート番号を書かなかったらこうなったという悪い見本。ポート番号は書くべし。

あと、ビルトインWebサーバーを停止させるには[CTRLキー]と[Cキー]を押すべし。

「赤枠のアドレスをブラウザに入れたら/home/vagramt/php_lessonsの中身にアクセスしますよ」ということらしいので早速…。

f:id:R_de_aru:20180607205857p:plain

出た!!!!こんにちは世界!!!!

また、エラーの確認についてだが、ビルトインWebサーバーのログを確認するのが手っ取り早いとのこと。試しに、以下のようにphpファイルを変更。

<?php
//コメント
#コメント
/*
コメント
コメント*/
  echoo "Hello,From the TOP!!";
?>
<!DOCTYPE html>
<html lang="ja">
<body>
  <p>Hello World <?php echo "From PHP";?></p>
</body>
</html>

この状態でブラウザを更新すると…

f:id:R_de_aru:20180607210320p:plain

動作していませんのメッセージ。今PuTTYを確認すると…

f:id:R_de_aru:20180607210519p:plain

これはヤバそうだ。赤文字を読んでみると、7行目が何かおかしいのでは?と出ているのが分かる。すごいな、分かるんだ…。

 

#4

変数とデータ型について。その前に、PHPの終了タグの後ろに何か出力するものがない場合は終了タグを省略するのが推奨されているとのこと。これからは先ほど書いていたhtml部分はいらないので、htmlとPHPの終了タグは消しておく。

まず、変数とはなんぞやというところから。レッスンによると、

変数:データに付けるラベル」

…まぁ、わかりやすく言うとこんな感じだと思います。

個人的には数学で出てきたxやyにいろいろな値(文字もOK)を入れるイメージ。

PHPの変数は、$(変数名)というように、頭に$マークをつける。今回はこんな風に。

$msg = "Hello,From the TOP!!" ;

変数に値を入れるときに使う=だが、これは「値が等しい」という意味ではなく「右辺を左辺に代入する」という意味で代入演算子と呼ばれる。

コードを下記のように書くと、$msgに入れた文字列が出力される。画像は省略。

<?php

$msg = "aaa";

echo $msg;

PHPで扱えるデータ型は以下の通り。

  • 文字型 string
  • 数値 integer(整数) float(浮動小数点数)
  • 論理値 boolean(True/False)
  • 配列
  • オブジェクト
  • Null

仕事のVB6でもよく見かける方々なので、見知らぬ土地に来たけど知り合いがいたような安心感を覚える。

驚くのは、PHPでは変数にデータ型を宣言する必要がないということ。楽になる反面、どの変数がどのデータ型なのか分からなくなりそう。

そういうときには以下の命令を実行すればデータ型がわかる。上記の$msgのデータ型を知りたいときは…

var_dump($msg) 

と入力する。 ブラウザには以下のように出力される。

string(20) "Hello,From the TOP!!" 

 string型で20文字、内容は「Hello,From the TOP!!」であることがわかる。

 

#5

定数を使ってみよう。

定数とは、プログラム上で変更されない値に付けるラベルだというイメージ。

自分も仕事のときはそういうイメージで扱っております。

定数を定義するにはdefineという命令を使い、定数の名前と値を渡す。

define("MY_EMAIL","xxx@email.com") 

こうすると「MY_EMAIL」という定数に「xxx@email.com」という文字列を渡したことになる。ちなみに、定数名は慣習的にすべて大文字で書く。変数とは違って$はつかないので間違えないようにする。

定数に値を渡そうとすると、ビルトインWebサーバーでエラーが出る。

「自動的に定義される定数」というのがあるらしい。以下のコマンドで確認が可能。

 

var_dump(__LINE__);  // 現在の行数

var_dump(__FILE__);  // 現在のファイル名

var_dump(__DIR__);    // 現在のディレクト

 LINEなどの前後は半角のアンダーバーが2つずつ。どこかで使うかも。

 

#6

数値の演算をする。

四則演算については+(加算)、-(減算)、*(乗算)、/(除算)を使う。

余りは%で算出、**でべき乗となる(べき乗演算子はPHP5.6から対応)。

以下のようにPHPを書いてみよう。

$x = 10%3; //余り1

$y =  30.2 / 4; //7.5くらい

var_dump($x);

var_dump($y);

 すると以下の結果が出力される。

int(1) float(7.55) 

 $xは整数なのでinteger、$yは小数点があるのでfloatとなっていることが分かる。

単項演算子についても扱う。++--で表現されるもので、「1足すor1引く」という意味になる。

$z=5;
$z++;
var_dump($z);
$z--;
var_dump($z); 

 このように書くと、ブラウザには以下のように出力される。

int(6) int(5) 

代入を伴う演算子というのも見ていく。試しに以下のコードを…。

$x=5;
$x=$x+2; 

こうすると$xには7が入る。まったく同じ結果を出すには以下の書き方もある。

$x=5;
$x+=2; 

この書き方は足し算だけでなく、四則演算すべてに使える。今回出てきた演算子全部でできそうな気もする。

$x=5;
$x*=2;
var_dump($x);

 とすれば、画面には

int(10) 

と出力される。

 

今回はここまで。

今夜はおすすめしていただいたスターデューバレーを楽しもうと思います!