** 概要 [#c084a835]

- 公式サイト:http://php.net/
- 用途:Webアプリケーション
- 用途: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]
** ビルトイン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) 変数
- '':
- "":特殊文字(\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&#12316;9を表示
 $i = 0;
 while ($i < 10) {
 	echo $i;
 	$i++;
 }

- do..while文

 // 0&#12316;9を表示
 do {
 	echo $i;
 	$i++;
 } while ($i < 10);

- while文とdo..while文の違い:条件が偽の場合、while文は処理を行わないがdo..while文は1回は処理を行う

** for文によるループ処理 [#k78322ca]

 // 0&#12316;9を表示
 for ($i = 0; $i < 10; $i++) {
 	echo $i;
 }

- break:ループを抜ける
- continue:それ以降の処理を実行せずに次のループに移る

 for ($i = 0; $i < 10; $i++) {
 	if ($i === 5) {
 		// break;  //  $iが5の時にループを抜けるため0&#12316;4を表示
 		// continue;  //  $が5の時のみ以降の処理をスキップするので5を除いた0&#12316;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>



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS