SAK 図書館
PHP 基礎編1 - 開発環境、注釈、変数、配列、連想配列、演算子、特殊文字
PHP が使用可能なサイトが増えつつあるので、Perl との相違を検証しておく。 Perl と違い PHP は、SQL RDBMS と連携しやすい。 PHP + MySQL 編も順次検証しながら作成していく。 PostgreSQL についても、MySQL との構文の違いを調査しておく。 ■PHP 開発環境 ・Apache、ActivePerl、PHP、MySQL のセットパッケージ phpdev4_5NT.exe で 開発環境を構築した。これで、PHP4 ベースの開発が可能である。 一般的には PHP3 がまだ主流かもしれない。 PHP4 独自の部分も調査しておく。 ・phpdev4_5NT.exe は、インストール先を c:\ 固定としてパッケージされて いるようである。 初期化ファイルや各種サンプルがドライブ、パスに依存していた。 他のドライブやパス構成に移動するには、説明が英語のため、けっこう苦痛 かもしれない。 うちのイントラは、IIS、ASP、Perl、Oracle がメインの開発環境なので、 PHP、MySQL は、おまけと言うことで、初期設定のまま使用することにする。 ・phpdev4_5NT.exe のインストールは実に単純であった。 このパッケージは、NT、2000、XP 用である。 他に 9x 用のパッケージもあった。 また、ActivePerl や MySQL が含まれないパターンなどのパッケージもある。 ・インストールすると、 c:/ phpdev/ apache/ manuals/ mysql/ mysqlfront/ perl/ php/ www/ cgi-bin/ phpdev4/ phpMyAdmin/ public/ test.htm yaks.html MYSQL README.txt phpdev_start.bat phpdev_stop.bat PLEASE README.txt と環境が構築される。 ・IIS のサービスはそのままでも、phpdev_start.bat を実行すると、 Apache、ActivePerl、PHP、MySQL のサービスがプロンプトサービスとして 起動する。プロンプトサービスを閉じると IIS が再び有効になる。 尚、メモリの解放を見ると、最後に phpdev_stop.bat を実行した方が 良さそうである。これで、MySQL 等全てクローズされる。 実に単純に上げ下げできるので、たまにしか使わない開発環境としては 手作業で、phpdev_start.bat、phpdev_stop.bat を使用する方が便利である。 ■ハロー PHP ・お約束の PHP 動作テスト。 <HTML> <?php // メッセージ表示 print "<P>はじめての PHP ですのん。</P>\n"; ?> </HTML> ・PHP は、fopen などの関数でファイルが見つからないと、エラーを表示して 処理が停止してしまう。 リターンコードで見つからないときの処理がしたいときなど、 エラートラップするには、関数の前に @ マークを付けて、次のようにする。 こうするとエラー抑制される。 $fno = @fopen("path/filename", 'r'); ・PHP は、パーミッション設定が不要らしい。 実際にインターネット上で PHP が動作する環境がないので、今のところ 信じるしかない。(^^; イントラネットでは www/ 配下で動作した。 CGI-Perl と同じに cgi-bin/ 配下に置くと動作しなかった。 (環境設定のせいかもしれない。) ・CGI-Perl の様に先頭に PHP へのパスと言うものはない。 ・PHP のコード部分は、<?php ... ?> で記述する。 これは、ASP の書き方に似ている。 他に <? ... ?> <% ... %> <SCRIPT LANGUAGE="php"> ... </SCRIPT> での記述もサーバ設定で許していれば可能である。 標準的には、<?php ... ?> となっている。 ・PHP の FTP は、当然ながらアスキー(テキスト) 形式であるが、愛用の ffftp.exe の自動判定に .php は含まれていなかった。 アスキーモードとしてアップロードするファイル拡張子に .php を追加した。 尚、サイト仕様によっては、.php3、.php4、.phtml など PHP の拡張子が 指定されている場合があるようである。 これらも自動判定拡張子に追加しておくと良いかも。 ■注釈 // 『//』以降注釈となる /* 複数行注釈開始 */ 複数行注釈終了 <HTML> <?php print "<P>注釈テスト</P>\n"; // 単一行注釈 /* 複数行注釈 複数行注釈 */ ?> </HTML> ■定数 define ("DATA_MAX", 100); $a = DATA_MAX; print "<P>$a</P>\n"; ■変数タイプ $a 単純変数 $b[] 配列変数 count($b) 配列の要素数 (最大添字は、count($b) - 1 となる) $c['key'] 連想配列 ・変数には、大文字小文字の区別がある。 ・基本的に Perl と同じ種類がある。 但し、書き方は少し異なる。 Perl の配列 @b[] は、PHP では、$b[] となる。 配列の最大添字 $#b の代わりは、count($b) - 1 となる。 連想配列 $c{'key'} は、$c['key'] となる。 ・シングルコーテーション「'」とダブルコーテーション「"」の使い分けは Perl と同じである。 「"」間は、$variable や \n が埋め込み展開される。 <HTML> <?php // 変数 $a = 100; $A = 200; $b = 'abc'; $c = "漢字"; $d[0] = 'd[0]'; $d[1] = 'd[1]'; $dmx = count($d); $h['data1'] = 'data1'; $h['data2'] = 'data2'; // 変数内容表示 print "<P>変数 \$a = $a</P>\n"; print "<P>変数 \$A = $A</P>\n"; print "<P>変数 \$b = $b</P>\n"; print "<P>変数 \$c = $c</P>\n"; print "<P>変数 \$d[0] = $d[0]</P>\n"; print "<P>変数 \$d[1] = $d[1]</P>\n"; print "<P>変数 \$dmx = $dmx</P>\n"; print "<P>変数 \$h['data1'] = ${h['data1']}</P>\n"; print "<P>変数 \$h['data2'] = ${h['data2']}</P>\n"; ?> </HTML> ・「"」中など、$variable を展開する場合、誤解析される場合がある。 そのときは、${h['data1']} のように、$ の次から { ... } で囲むと良い。 ・変数は数値でも文字でも入る。VB の variant と同じと思えばよい。 ・ユーザ関数内で作成した変数は、ローカル変数となる。 Perl のような my()、local() の指定はない。 但し、PHP では、グローバル変数は関数内ではそのまま扱えない。 global $variavle; を関数内で宣言すると、グローバル変数 $variavle に アクセスできる。 static 宣言は、C 言語での意味と同じである。 <HTML> <?php // 変数 $a = 100; $b = 200; $c = 300; $d = 400; // 関数呼び出し $e = test($d); // 変数内容表示 print "<P>変数 \$a = $a</P>\n"; print "<P>変数 \$b = $b</P>\n"; print "<P>変数 \$c = $c</P>\n"; print "<P>変数 \$d = $d</P>\n"; print "<P>変数 \$e = $e</P>\n"; /* ======================================================================== テスト関数 ======================================================================== */ function test($p) { global $a; static $b; $c = 1; $a += 10; $b += 20; $c += 30; $p += 40; return(50); } ?> </HTML> ・C 言語と同じように引数は値渡しである。 このサンブルを実行すると、 変数 $a = 110 変数 $b = 200 変数 $c = 300 変数 $d = 400 変数 $e = 50 と表示される。 $a は、関数 test() で、global $a; と宣言しているので、110 になる。 $b、$c、$d は、関数 test() 内と別物となり、影響を受けていない。 ■演算子 + 加算 - 減算 * 掛け算 / 割り算 % 余り ++ インクリメント (+ 1) -- デクリメント (- 1) pow() べき乗 << 左ビットシフト >> 右ビットシフト . 文字列結合 ereg() 正規表現 ++$i は、$i が参照される前にインクリメントされる。 $i++ は、$i 参照後にインクリメントされる。 ■代入 = 単純代入 += 加算代入 -= 減算代入 *= 乗算代入 /= 除算代入 .= 文字列結合代入 $a = $a + $b; は、$a += $b; と等しい。 $a = array('abc', 'def', 'ghi'); も OK。 16 進数は、C と同じ 0x00ff と表現。 ■特殊文字 (エスケープシーケンス) \n 改行 \r キャリッジリータン \t タブ \\ \ \$ $ \" " \' ' 『"』ダブルコートリテラルで展開される。 『\"』『\$』など『"』や『$』が直接記述できない箇所で使用する。 ■PHP 基礎編資料
■PHP + MySQL 編資料
■CGI-Perl 基礎編資料
■CGI-Perl 基礎実地編資料
■CGI-Perl 応用実地編資料