実践編:PHPプログラムの書き方:PHP4で作るWeb-DBシステム(3)(3/5 ページ)
今回は非常にシンプルなPHPプログラムのサンプルを豊富に掲載した。これにより、HTMLの中に埋め込まれたPHPプログラムがどういうものか、理解できるはずだ。変数、定数、条件分岐、ループなど、PHPプログラムも基本的な構造は普通のプログラム言語と変わりがない。
PHP命令、変数と定数
それでは、本題に入って、PHPでのプログラムの書き方を解説していきます。1つの言語を学ぶときに、基本だけを知るのであれば、以下の3つのポイントを押さえることになります。
- 言語の基本的な記述ルールや構造
- 変数の取り扱いと扱える型
- 制御構造の書き方
本稿でも、このポイントについて、順に解説していきます。
■基本的な記述ルール
以前にもご紹介しましたが、PHPのプログラムは、HTMLの中に埋めこむ形で記述します。したがって、PHPの命令の部分はHTMLのタグと区別する方法が必要になります。そのための単純で、最も多用される方法が、
<?PHP ここにPHPプログラム ?>
という形式で記述する方法です。リスト3は、HTMLの中へのPHPプログラム記述を、さきほどの形式で行った例です。
<html> <body> <?php echo("Hello World"); ?> </body> </html>
このほかにも、以下のようにscriptタグを使う方法があります。この方法はJava ScriptやVB Scriptでも用いられる方法ですから、こちらの方が馴染みやすい方もいるかもしれません。この方法の例はリスト4に示しておきます。
<html> <body> <script language="php"> echo("Hello World"); </script> </body> </html>
このほかにも、PHP4ではあと2つの記述方法がサポートされていますが、基本的には今紹介した2つさえ使えれば問題ありません。しかも、ほとんどの場合は最初に紹介した<?PHP ?>を使うことになります。
■命令ごとにセミコロンで区切る
このように、PHPプログラムの記述は難しいものではありませんが、もう1つだけ守らなくてはならないルールがあります。それは、1つの命令を終えるごとに、セミコロンをつけなくてはならないということです。
プログラムを記述するときには、ほとんどの場合複数の命令を記述します。そこでPHPでは、命令と命令の間を区切るためにセミコロンを用いるのです。セミコロンをつけ忘れると、エラーとなりますので、このルールを忘れないようにしてください。
■コメントは/* */で囲む
また、PHPでコメントをつけるには、CやC++言語、およびUNIXシェル型のコメント形式を用います。つまり、複数行にわたるコメントは「/* */」で囲み、1行だけのコメントであれば「//」を使うことで、「//」以降がコメントとして扱われます。ただし、「/* */」がネストするとエラーになりますので注意しなくてはなりません(リスト5)。
<html> <body> <?PHP /* これはコメントとして扱われます。*/ /* これも 複数行の コメントとして 適切な形です。 */ echo("Hello World"); //1行コメントとして使えます。 /* しかし、これは /* エラーになります */ ネストしているからです。*/ ?> </body> </html>
コメントは、あとでプログラムを読みやすくするために、欠かせないものです。コメントの打ち方も覚えて、適当に使ってください。
■変数と扱える型
次に覚えなくてはならないのは、変数や定数、配列の取り扱いです。変数や定数も、データや計算結果を記憶させるための入れものとして、プログラムには欠かせません。また、変数には取り扱うことのできる値の範囲に応じて、型というものが決められています。
PHPで用意されている型は、
- 整数
- 浮動小数
- 文字列
- 配列
- オブジェクト
以上です。それぞれの型は、その名の通りの値を取り扱うことができますが、明確な上限も下限もありません。したがって、一般的な言語に比べて、変数の値が簡単になっています。
また、PHPでは型を意識する必要も、定義する必要もありません。変数の型は、変数に入れられる値に応じてPHPが自動的に決定するからです。もしも変数の型を強制的に変換したければ、キャストするかsettype関数を用います。
PHPで値が文字列として扱われるのは、
- 値がダブルクオート(")で囲まれた場合
- シングルクオート(')で囲まれた場合
- ヒアドキュメント構文を用いた場合
です。ヒアドキュメントはPHP4で追加された新しい方法ですが、UNIXシェルなどでは以前から用いられています。ヒアドキュメントは、「<<<」の後ろに指定されたIDから、同じIDまでの間を文字列とします(リスト6)。
<html> <body> <?php /* 文字列を代入します */ $str = "This is a string"; /* 変数に文字列を追加します */ $str = $str . " with some more text"; /* 変数に文字列を追加し、改行を加えます */ $str .= " and a newline at the end.\n"; /* 変数$numの値と共に文字列を格納します */ $num = 1; $str = "<p>Number: $num</p>"; /* この場合$numは変数でなく文字列として扱われます */ $num = 9; $str = '<p>Number: $num</p>'; /* 変数$firstは、変数$strの最初の1文字「T」になります */ $str = 'This is a test.'; $first = $str[0]; /* 変数$lastは、変数$strの最後の1文字「.」になります */ $str = 'This is still a test.'; $last = $str[strlen($str)-1]; /* ヒアドキュメントにより複数行の文字列を格納します */ $str = <<<EOD Example of string spanning multiple lines using heredoc syntax. EOD; ?> </body> </html>
また、文字列を格納している変数の値に、さらに文字列を加える場合は、「.」(ドット)を使います。以下に例を示しましょう。
$foo=$foo . " additional strings"
このほか、文字列に特別な記号や改行などを加えるには、「\」をエスケープ文字として用います(表1)。
記述 | 意味 | |
---|---|---|
\n | 改行 | |
\r | 複改 | |
\t | 水平タブ | |
\\ | バックスラッシュ | |
\$ | ドル記号 | |
\\ | 円記号 | |
\" | 二重引用符 | |
表1 エスケープ文字との組み合わせで表現できる特殊文字 |
PHPプログラム内で変数を用いるには、前記の通り「$」を、変数名の前につけて行います。PHPでは、先ほどのエスケープ文字(\)を用いないかぎり、$のつくものは変数として扱われます。したがって、「"」で囲まれていても、変数に格納された値で置き換えられてしまうのです。
変数名は大文字小文字を区別しますので、表記は統一しておく方がいいでしょう。変数名は、文字またはアンダースコア「_」で始まり、文字と数字とアンダースコアを使わなくてはなりません。変数名の長さには、特に制限がありませんから、常識的な長さであれば好きな名前をつけられます。
一般的な言語と同じく、変数への代入は「=」を使って行われ、右辺の値や式が左辺の変数へと代入されます。すでにご紹介した通り、代入されるときに、変数には適当な型が割り当てられます。割り当てられる型が、思い通りでなければ、キャストするかsettype関数を使って変換しなくてはなりません。
■定数の定義
PHPでは、変数だけでなく、定数を用いることもできます。定数は変数と似ていますが、値を書き換えられないところが違います。また、PHPで定数を用いる場合はdefine関数を使って宣言しなくてはなりません。
define関数の使い方はとてもシンプルで、
define("定数名","値");
のようにして定数の値を宣言します。注意すべきことは、定数には「$」が前につかないことです。これは、宣言するときだけでなく、参照するときも同じです。
あらかじめ、いくつかの定数がPHPによって定義されていることも知っておく必要があります。これらの定数は、デバッグ作業において、非常に有効なものを多く含んでいます。それらのリストを表2にまとめていますので、そちらを参照してください。
定数名 | 意味 | |
---|---|---|
_FILE_ | 処理中のファイル名。includeされている場合は、そのファイル名となる | |
_LINE_ | 処理中の行番号。includeファイルを処理中の場合は、そのファイルでの行番号となる | |
PHP_VERSION | 使用中のPHPパーサーのバージョン | |
PHP_OS | PHPパーサーを実行中のOS名称 | |
TRUE | 真を表す | |
FALSE | 偽を表す | |
E_ERROR | 構文エラー以外のエラーを定義します | |
E_WARNING | 誤りがあるものの、実行は可能である場合の続行条件を定義します | |
E_PARSE | 不正な構文によりパーサーの処理が中断した状態 | |
E_NOTICE | 上記以外の何かが起きた状態 | |
E_ALL | 全てのE_ではじまる定数が含まれる | |
注:E_がつく定数は、エラーレポートレベルを設定するために、通常error_reporting関数とともに使用される | ||
表2 あらかじめ定義されている定数 |
■配列変数
こんどは配列について説明します。配列も変数と同じく、値を代入したときに、型が割り当てられて作成されます。必要であれば、array関数やlist関数を使って宣言することも可能ですが、あまり用いる機会はありません。
配列名は、変数と同じく「$」を使って宣言し、配列の要素には「[]」を使います。要素の名称には、一般的な数値を使う方法(スカラー配列)と、文字列を使う方法(連想配列)が用意されています。
PHPでは、配列の要素を明示的に指定する必要がありません。つまり、
$a[]=1;
のように、空の要素に代入できるのです。この場合、配列aの最後の要素として、値が代入されます。しかし、こういった方法を用いると、プログラムが曖昧になりますのでお勧めはしません。やはり、きちんと明示して、あとで読んでも分かりやすいものにしましょう。
ちなみに、「[]」を連ねることにより多次元配列も取り扱えます。多次元配列の要素には数値添字と文字列添字を混在でき、次元数の制限はありません。一般的な1次元や2次元だけでなく、4次元でも5次元でも、好きなだけ増やすことができるのです。
このように、PHPでは変数の扱いが非常に簡単で、制限もほとんどありません。しかし、変数がプログラムの中に散乱してしまい、複雑なプログラムでは変数の管理に苦労します。それを防ぐには、変数名と役割のリストを、プログラムの先頭にコメントしておくといいでしょう。
ここでは、最低限の内容だけをサポートしましたので、詳細についてはマニュアルを参考にしてください。マニュアルには、ここに紹介した関数や言葉以外に、たくさんの有益な関数などが紹介されています。
Copyright © ITmedia, Inc. All Rights Reserved.