それでは、本題に入って、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.