今からスタート! PHP
第4回 PHP言語で記述できるもの
これからPHPプログラミングを始めようと思ったときに,おそらく「PHP マニュアル」を参照したことがあるでしょう。ただ,こうしたドキュメントは専門用語を知っていることを前提として書かれている部分が多く,戸惑ってしまうかもしれません。
今回は,PHPというプログラミング言語で記述可能なものについて説明します。
全体を <?php ... ?> で囲む
PHP言語を用いてプログラミングを行う場合,1つのファイルに記述されるソースコードは <?php で始まり ?> で終わるように記述します。前回紹介した,コマンドプロンプトで php -r ... を実行する方法は,「ちょっとしたこと」を実行するのには向いていますが,それ以上の規模のプログラミングでは無理があります。そこでこれからは全体を <?php ... ?> で囲むようにします。
型
型(かた)とは,PHP言語で取り扱うことができるデータの種類をいいます。「データ型(がた)」と記されている場合も,指しているものはだいたい同じです。
プログラムは,あるデータ(入力)を何らかの方法で処理し,別の形のデータにします(出力)。ですから,型の種類を知ることはプログラミングの最も基本といえます。
型で決められているのは,扱える値の範囲や種類です。たとえば小数点つきの値は浮動小数点数として扱われます。小数点のない値は整数となります。また,論理値ではTRUEとFALSEの2つしか取り得る値がありません。
PHP言語では以下の3種類の型が決められています。
| スカラー型 | 1つのデータで1つの値を構成するもの | |
|---|---|---|
| 論理値(boolean), 整数(integer), 浮動小数点数(float/double), 文字列(string) | ||
| 複合型 | 複数のデータで1つの値を構成するもの | |
| 配列(array), オブジェクト(object) | ||
| 特別な型 | データの種類や状態を値として示すもの | |
| リソース(resource) | ファイルの入出力など | |
| ヌル(NULL) | 値が定義されていないこと | |
変数
変数(へんすう)とは,ある値を別の名前で言い換える(代入する)ために用いられます。マニュアルなどでは$foo, $barなどと記述されることが多いですが,PHP言語で決められた範囲で自由に名前をつけることができます。後からソースコードを読み返しても変数の意味がわかるように,プログラムの内容に沿った名前をつけるようにしましょう。
なぜ変数が用意されているかというと,別々の値に対して同じ処理を施すことがプログラムではよくあるからです。値が変わるたびに同じようなソースコードを何度も作成するのは,面倒で退屈な作業です。変数を使えば違う値を代入するだけでよく,処理を効率的に記述することができます。
変数に関連する概念としてスコープ(有効範囲)があります。これは,代入された値が有効である範囲をいいます。たとえば,後述する関数の中で記述された変数は,その関数内でのみ代入された値が有効になります。同じ名前の変数でも半数の外では別の値が代入されていることもあり得ます。
定数
定数(ていすう)とは,ある値につける特別な名前です。変数とよく似ていますが,大きく違うところがあります。変数は同じ名前でも,処理の途中で別の値を代入できるのに対し,定数は一度名前を決めてしまうと(定義すると),その値を変更できないことです。
名前をつける理由は,その値が何を表すのかわからない,ということを防ぐためです。単に100という数値が書かれているよりも,MAX(最大値)と書いてあるほうが,意味がわかりやすくなることがプログラミングではよくあります。
同じ100でも,それがMIN(最小値)だとすると数値の持つ意味がまったく異なり,プログラムでの扱いも変わってきます。ですから,意味のある値に名前をつけておくことは,とても重要なのです。
式
式(しき)というと,一般的には計算式,公式,儀式などを思い浮かべるかもしれませんが,プログラミングでいう式はすこし違います。PHPプログラムにおける1つの処理は1つの式といってよいでしょう。それから,いくつかの処理のまとまりも1つの式とみなされることがあります。
式には,計算式も含まれますが,一般的な計算式とは少し記述の仕方が違うところがありますので注意が必要です。
演算子
演算子(えんざんし)は,ある値を別の値に変換する処理(演算)をシンプルに記述するために用いられます。馴染みのあるものでは,+, -, *, /という四則演算を行う記号は演算子に含まれます。プログラミングの書籍などに出てくる何かの記号を表す用語で,子という字を「し」と読むことがよくあります。演算子は,演算を行うときに用いる記号という意味です。
関連する概念として,演算子の優先順位があります。たとえば 3 + 2 * 4 は 2 * 4 の後に 3 を足して,値は11となります。3を先に足す場合は ( 3 + 2 ) * 4 のように記述しなくてはなりません(値は20)。このように,複数の演算子が同時に記述されているときに,どれを先に実行するかは結果に大きく影響します。演算子が記述された処理で思ったような結果を得られないときは,優先順位を確認しなおしてみましょう。
PHP言語で用いられる演算子には,以下の3種類があります。
| 単項演算子 1つの値に付記する | -(マイナス) | 負の数 |
|---|---|---|
| ++ | 加算子 | |
| -- | 減算子 | |
| ! | 否定(論理演算子) | |
| ~ | 否定(ビット演算子) | |
| ` ... ` | 実行演算子(...に記述されているコマンドを実行) | |
| など | ||
| 2項演算子 2つの値の間に記述する | +, -, *, / | 四則演算 |
| % | 剰余(割り算の余り) | |
| . | 文字列の結合 | |
| = | 代入 | |
| .=, +=, ... | 複合演算子 | |
| ==, <, >, ... | 比較演算子 | |
| &&, ¦¦, ... | 論理演算子 | |
| instanceof | 型演算子 | |
| など | ||
| 3項演算子 式の値に応じて,A, Bどちらかの式を実行する | 式 ? 値A : 値B | |
制御構造
制御構造(せいぎょこうぞう)は,まず制御と構造とに分けて考えます。
制御とは,プログラムにおける処理の流れを操ることです。日常生活でも「信号が赤なら止まる」など,状況に応じて行動を変えることがよくありますが,プログラミングでもやはり状況に応じて処理の流れを変えることはよく行われます。
構造とは,ある意味を持った処理のまとまりをいいます。たとえば,平常時に行う処理と何か異常が起きたときの処理とは,それぞれ別のまとまりとなります。よって両者は別の構造ということができます。また,複数の構造をまとめた構造というのもありますので,構造にはどの位置に記述されているかという意味も含まれます。
そこで制御構造ですが,状況に応じて複数の処理の流れがあり得るときに持たせる構造ということになります。たとえば,何か異常が起きたときと,そうでないときには別々の構造になるようにプログラムを記述しておき,「どんな状況のときにどの部分が処理されるのか」をわかるようにしておくためのものと言えます。
関数
関数(かんすう)とは,処理のまとまりに名前をつけたものです。こうすることで,処理のまとまりが複雑になるときに一部を関数として切り出したり,何度も同じ処理を行う場合に,処理の内容をわかりやすく効率的に記述することができます。
名前には変数や定数とは異なる役割があります。それは,別の処理の中でその名前を使って関数が実行されるということです。
呼び出すほうの処理からは,関数に対して引数(ひきすう)という値をはじめに提供します。関数はそれらを用いた処理を行い,結果を戻り値(もどりち)として呼び出し元に提供します。引数は複数の値を記述できますが,戻り値は1つのみです。戻り値で複数のデータを提供する場合は,複合型を用いることになります。
クラス
クラスは,PHP言語ではバージョン4から導入されたものですが,バージョン5になって新たな機能が多く追加されていますので,どのバージョンのPHPでプログラミングするかに注意して記述する必要があります。この連載で用いているのはバージョン5です。
クラスには変数と関数が含まれます。PHP言語では,クラス内に記述される変数をメンバ,関数をメソッドといいます。
クラスは最初から作成するだけでなく,すでに作成済みのクラスに新たな機能を追加して別のクラスとする継承や,呼び出せる相手を制限するアクセス権の設定などが可能です。
例外
例外とは,プログラム内で発生した何かの異常をいいます。PHP言語ではExceptionクラスを元にして定義されています。あらかじめ処理系に組み込まれた例外もありますが,アプリケーションで独自の例外を作成することもできます。
次回からは,これらを具体的に記述してPHPプログラミングを実践していきます。

