連載
» 2000年09月28日 00時00分 公開

PHP4で作るWeb-DBシステム(3):実践編:PHPプログラムの書き方 (3/5)

[一志達也,株式会社東洋情報システム]

PHP命令、変数と定数

 それでは、本題に入って、PHPでのプログラムの書き方を解説していきます。1つの言語を学ぶときに、基本だけを知るのであれば、以下の3つのポイントを押さえることになります。

  1. 言語の基本的な記述ルールや構造
  2. 変数の取り扱いと扱える型
  3. 制御構造の書き方

 本稿でも、このポイントについて、順に解説していきます。

■基本的な記述ルール

 以前にもご紹介しましたが、PHPのプログラムは、HTMLの中に埋めこむ形で記述します。したがって、PHPの命令の部分はHTMLのタグと区別する方法が必要になります。そのための単純で、最も多用される方法が、

<?PHP ここにPHPプログラム ?>

という形式で記述する方法です。リスト3は、HTMLの中へのPHPプログラム記述を、さきほどの形式で行った例です。

<html>
  <body>
    <?php echo("Hello World"); ?>
  </body>
</html>
リスト3  簡単なPHPプログラムの例

 このほかにも、以下のようにscriptタグを使う方法があります。この方法はJava ScriptやVB Scriptでも用いられる方法ですから、こちらの方が馴染みやすい方もいるかもしれません。この方法の例はリスト4に示しておきます。

<html>
  <body>
    <script language="php">
      echo("Hello World");
    </script>
  </body>
</html>
リスト4 簡単なPHPプログラムの例(その2)

 このほかにも、PHP4ではあと2つの記述方法がサポートされていますが、基本的には今紹介した2つさえ使えれば問題ありません。しかも、ほとんどの場合は最初に紹介した<?PHP ?>を使うことになります。

■命令ごとにセミコロンで区切る

 このように、PHPプログラムの記述は難しいものではありませんが、もう1つだけ守らなくてはならないルールがあります。それは、1つの命令を終えるごとに、セミコロンをつけなくてはならないということです。

 プログラムを記述するときには、ほとんどの場合複数の命令を記述します。そこでPHPでは、命令と命令の間を区切るためにセミコロンを用いるのです。セミコロンをつけ忘れると、エラーとなりますので、このルールを忘れないようにしてください。

■コメントは/* */で囲む

 また、PHPでコメントをつけるには、CやC++言語、およびUNIXシェル型のコメント形式を用います。つまり、複数行にわたるコメントは「/* */」で囲み、1行だけのコメントであれば「//」を使うことで、「//」以降がコメントとして扱われます。ただし、「/* */」がネストするとエラーになりますので注意しなくてはなりません(リスト5)。

<html>
  <body>
    <?PHP
      /* これはコメントとして扱われます。*/
      /* これも
      複数行の
      コメントとして
      適切な形です。 */
      echo("Hello World"); //1行コメントとして使えます。
      /* しかし、これは
      /* エラーになります */
      ネストしているからです。*/
    ?>
  </body>
</html>
リスト5 コメントの付け方

 コメントは、あとでプログラムを読みやすくするために、欠かせないものです。コメントの打ち方も覚えて、適当に使ってください。

■変数と扱える型

 次に覚えなくてはならないのは、変数や定数、配列の取り扱いです。変数や定数も、データや計算結果を記憶させるための入れものとして、プログラムには欠かせません。また、変数には取り扱うことのできる値の範囲に応じて、型というものが決められています。

 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>
リスト6 文字列の扱い方

 また、文字列を格納している変数の値に、さらに文字列を加える場合は、「.」(ドット)を使います。以下に例を示しましょう。

$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.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。