** 概要 [#c084a835] - 公式サイト:http://php.net/ - 用途:Webアプリケーション開発 ** 環境 [#e7873d4b] - OS X 10.11 El Capitan - Vagrant 1.8.1 - VirtualBox 5.0.20 - CentOS 7.2.1511 - PHP 5.6.21 ** PHP 5.6のインストール [#o0df1904] - Remiリポジトリの追加 $ sudo yum -y install epel-release $ cd /etc/yum.repos.d $ sudo wget http://rpms.famillecollet.com/enterprise/remi.repo - yum listで提供されているパッケージを確認 $ yum list --enablerepo=remi --enablerepo=remi-php56 | grep php - RemiリポジトリからPHP 5.6をインストール $ sudo yum -y install --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-devel php-pear php-mbstring php-mcrypt php-mysqlnd - PHPの標準的なライブラリ php-devel ... PHP開発用モジュール php-pear ... ライブラリのリポジトリ php-opcache ... PHPスクリプトをコンパイルしキャッシュ php-mbstring ... マルチバイト文字モジュール php-mcypt ... 暗号化モジュール php-mysqlnd ... MySQLモジュール - PHPバージョン確認 $ php -v PHP 5.6.21 (cli) (built: Apr 28 2016 07:39:37) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies ** Hello World [#z0708051] - index.php作成 <?php // 1行コメント # 1行コメント /* 複数行コメント 複数行コメント 複数行コメント */ echo "hello from the TOP!" ?> <!DOCTYPE html> <html lang="ja"> <body> <p>Hello World <?php echo "from PHP";?></p> <body> </html> ** ビルトインWebサーバーを起動 [#d4e62b41] $ php -S 192.168.33.10:8000 PHP 5.6.21 Development Server started at Sat May 21 05:27:21 2016 Listening on http://192.168.33.10:8000 Document root is /home/vagrant/php_lessons Press Ctrl-C to quit. - ブラウザで"http://192.168.33.10:8000"にアクセスすると結果を表示 - エラー時はビルトインサーバーのログを確認 ** 変数とデータ型 [#g24859d3] <?php $msg = "hello from the TOP!"; echo $msg; - データ型 -- 文字列 string -- 数値 integer, float -- 論理値 boolean / true false -- 配列 -- オブジェクト -- null - 変数のデータ型を確認する方法 var_dump($msg); ** 定数 [#c4c6605a] <?php define("MY_EMAIL", "yuji@dot.com"); echo MY_EMAIL; // MY_EMAIL = "hogehoge"; // エラー発生 var_dump(__LINE__); // 現在の行(何行目か)を表示 var_dump(__FILE__); // ファイル名を表示 var_dump(__DIR__); // ディレクトリ名を表示 ** 数値の計算 [#x226fabb] - 演算子:+ - * / % **(PHP5.6-) $x = 10 % 3; // 1 $y = 30.2 / 4; // 7.55 var_dump($x); var_dump($y); - 単項演算子:++ -- $z = 5; $z++; // 6 var_dump($z); $z--; // 5 var_dump($z); - 代入を伴う演算子 $x = 5; $x += 2; // $x = $x + 2;と同じ。その他の四則演算も利用可能 var_dump($x); ** 文字列 [#v108abc6] - "":特殊文字(\n, \t) 変数展開可 - '':通常の文字、変数展開は不可 $name = "yuji"; $s1 = "hello $name!\nhello again!"; // 特殊文字、変数の展開が有効 $s2 = 'hello $name!\nhello again!'; // 特殊文字、変数の展開が無効 var_dump($s1); var_dump($s2); - ブラウザコンソールより実行結果のソースコードを表示 string(24) "hello yuji! hello again!" string(26) "hello $name!\nhello again!" - 文字列内の変数記述 // 以下の何れの記述でも可 $s1 = "hello $name!\nhello again!"; $s1 = "hello ${name}!\nhello again!"; $s1 = "hello {$name}!\nhello again!"; - 文字列の連結 $s = "hello" . "world"; // helloworld var_dump($s); ** if文による条件分岐 [#vbd9b20b] - 比較演算子:> < >= <= == === != !== &color(red){※}; === !==の場合はより厳密に値と型を含めて比較 - 論理演算子:and && , or || , ! $score = 85; if ($score > 80) { echo "great!"; } elseif ($score > 60) { echo "good"; } else { echo "so so ..."; } ** 真偽値 [#o7689904] - falseになる場合 -- 文字列:空, "0" -- 数値:0, 0.0 -- 論理値:false -- 配列:要素の数が0 -- null $x = 5; if ($x) { // $xが0でない場合はtrue($x == true) echo "great"; } - 三項演算子 // 真であれば$aを$maxに代入、偽であれば$bを$maxに代入。 $max = ($a > $b) ? $a : $b; // 下記のif文で置き換え可能 if ($a > $b) { $max = $a; } else { $max = $b; } ** switch文による条件分岐 [#aabfe42d] $signal = "red"; switch ($signal) { case "red": echo "stop!"; break; // $signalが"blue"または"green"の場合 case "blue": case "green": echo "go!"; break; case "yellow": echo "caution"; break; default: // どの条件にも該当しない場合 echo "wrong signal"; break; } ** while文によるループ処理 [#q5449f29] - while文 // 0〜9を表示 $i = 0; while ($i < 10) { echo $i; $i++; } - do..while文 // 0〜9を表示 do { echo $i; $i++; } while ($i < 10); - while文とdo..while文の違い:条件が偽の場合、while文は処理を行わないがdo..while文は1回は処理を行う ** for文によるループ処理 [#k78322ca] // 0〜9を表示 for ($i = 0; $i < 10; $i++) { echo $i; } - break:ループを抜ける - continue:それ以降の処理を実行せずに次のループに移る for ($i = 0; $i < 10; $i++) { if ($i === 5) { // break; // $iが5の時にループを抜けるため0〜4を表示 // continue; // $が5の時のみ以降の処理をスキップするので5を除いた0〜9を表示 } echo $i; } ** 配列 [#j0092afb] - key / value $sales = array( "tanaka" => 200, "suzuki" => 800, "sato" => 600, // 最後の行のカンマは省略可 ); // PHP5.4 or later $sales = [ "tanaka" => 200, "suzuki" => 800, "sato" => 600, // 最後の行のカンマは省略可 ]; var_dump($sales["suzuki"]); // 800 $sales["suzuki"] = 900; // 900を代入 var_dump($sales["suzuki"]); // 900 // 配列のkeyを省略(0から連番でkeyが自動で付与される) $colors = ["red", "blue", "pink"]; var_dump($colors[1]); // blue ** foreach [#n663269e] - 配列の内容をループ処理で取り出すことができる命令 $sales = [ "tanaka" => 200, "suzuki" => 800, "sato" => 600, ]; foreach ($sales as $key => $value) { echo "($key) $value "; } // 配列のkeyが省略されている場合 $colors = ["red", "blue", "pink"]; foreach ($sales as $value) { echo "$value "; } - コロン構文(foreach if while for) $colors = ["red", "blue", "pink"]; foreach ($colors as $value) : echo "$value "; endforeach; - HTML内にコードを埋め込む際に可読性が向上する <?php $colors = ["red", "blue", "pink"]; ?> <ul> <?php foreach ($colors as $value) : ?> <li><?php echo "$value "; ?></li> <?php endforeach; ?> </ul>