Daily Archives: 2011年10月17日

初心者による初心者のためのPHP講座 第2回 PHPの基本構造

第2回では、PHPプログラムの基本構造について説明する。 プログラミング環境の準備 前回、テキストエディタの準備が必要であることを書いたが、「TeraPad」を例に話を進めてゆく。 インストールが完了したら、まず、文字コードと改行コードの設定しておくと良いだろう。 「TeraPad」の場合は、「表示」メニューから「オプション」を実行し、「文字コード」タブを開くと、ファイルを開いた際の文字コードである「初期文字コード)」保存する際の文字コードである「保存文字コード」の設定が出来るようになっているので、それぞれ設定しておく事。 テキストにマルチバイト文字を含まない限り、文字コードの「自動判別」は効かないので、意識しなくとも意図した文字コードで保存されるようにするためにも必要な設定である。 PHPは、Unix環境で動作させる事が多い事もあり、 文字コード:EUC(EUC-JP)、 改行コード:LF が使われることが多く、これは無難な設定である。 私の場合は、WordPress用のプラグインを作ることが多く、ウェブサイトもUTF-8で記述する事が多いので、 文字コード:UTF-8N(UTF-8、BOMなし)、改行コード:LF に設定しており、この講座は、この設定を前提に話を進めてゆく。 ファイルの拡張子 PHPで記述されたコードを含むファイルの拡張子は、原則として「php」とする必要がある。 ファイル名には、半角英数字を使用し、区切りが必要な場合は「.」や「-」、「_」を使用する。 そして「.php」で終わるようすること。 アップロードと実行 PHPで記述されてファイルは、HTMLで記述されたファイル同様に、ウェブサーバーにアップロードすれば良い。 拡張子は異なるものの、実行もHTMLの場合と全く同じ要領であり、「http://example.com/index.php」のようなURLをブラウザに入力してアクセスすれば良い。 基本構造 PHPは、下記のようにHTMLに簡単に組み込むことが出来る。 <!doctype html> <?php echo ‘<?xml version=”1.0″ encoding=”utf-8″?>’; ?> <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> <html xmlns=”http://www.w3.org/1999/xhtml” lang=”ja” xml:lang=”ja”> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ /> <title>PHPの基本構造</title> </head> <body> <p>PHPで日付を表示します。</p> <p>今日は、<?php echo date(“Y/m/d”); ?> です。</p> </body> </html> 上記のスクリプトの実行結果を表示 PHPによる記述は、 <?php PHPでの記述 ?> の部分であり、PHPのプログラムは、「<?php」で始まり「?>」で終わる必要がある この「<?php」と「?>」に囲まれた間に、PHPで命令文を記述してプログラムを作成する。 複数の命令文を書く事も可能で、「;」が命令文の区切りを表し、各命令文の最後には「;」を付ける必要がある。 例外として「?>」の直前の命令文は「;」を省略することが出来るが、命令文には「;」を付けることを習慣とした方が良い。 また、「<?php」と「?>」で囲まれたPHPプログラムは、1つのファイル内で複数回登場しても良い。 逆に「<?php」と「?>」に囲まれない範囲にあるHTMLによる記述は、そのままHTMLとして処理される。 つまり、HTMLとPHPを、簡単に混在させることが出来る。 サンプルプログラムでは、下記のコードで、現在の日付を動的に表示している。 <?php echo date(“Y/m/d”); ?> ここでは、echo()、date()と言う2つの関数を使用している。 「関数」とは、「与えられた値(引数)を元に処理を行い、結果(戻り値)を返す」という役割を担う命令文で、PHPプログラム内の処理の中心となる構造物である。 関数を電子レンジに例えるなら 引数・・・温める時間。 処理・・・物を温める。 戻り値・・・加熱の終了を知らせる音。 と言ったところだろうか。 シンプルな時計は、引数を必要としないが、時刻の計算処理を実行し、戻り値として現在の時刻を常に返すと言えるかもしれない。 実際、サンプルスクリプトでも使用しているdate()関数は、時計と似ている。 関数は、通常、下記のように記述する。 関数名(引数) サンプルプログラムを見るとechoには「()」が無く、これは関数のルールから外れているように思えるが、echo()の場合は「()」を省略出来る。 「()」が省略できるのは、echo()は厳密には関数ではなく、「言語構造」と呼ばれるものであるためだが、ともかく、echo()は、こう言うものと理解しておこう。 ただし、ここでは便宜上、関数として扱う。 echo()の「()」を省略せずに <?php echo(date(“Y/m/d”)); ?> と書くことも出来るが、通常は、このような書き方はしない。 date()関数は、現在の日付を計算する関数で、引数として日付のフォーマット(Y/m/d)を関数に渡し、戻り値として現在の年月日を返させている。 echo()関数は、引数をブラウザに表示する処理を行う。 この場合、echo()関数の引数は、date()関数の戻り値であり、結果としてブラウザには、現在の年月日が「/」区切りで表示される。 このサンプルプログラムでは、date()関数の引数に文字列(別の機会に詳しく)を使用しているが、文字列は「”」や「’」で囲むなどする必要がある。 関数には、引数、処理、戻り値の3つが必ずしもセットになっているとは限らない。 例えば、echo()関数は、引数を必要とし、引数をブラウザに表示する処理を行うが、戻り値は返さない。 echo()関数と同等の処理を行う関数として、print()関数があるが、こちらは戻り値を返す。 ちなみにprint()も厳密には関数ではなく、言語構造。 echo()関数やdate()関数は、PHPで予め定義された関数で、同様の関数は他にも沢山あり、「関数リファレンス」で見つけることが出来る。 ※関数リファレンスでは、「引数」は「パラメーター」、「戻り値」は「返り値」と表記されている。 このような定義済み関数の他に、自身で関数を定義して使用することも出来る。 サンプルプログラムでは、下記にもPHPを使用している。 <?php echo ‘<?xml … 続きを読む →

Posted in PHP, PHP講座, ネット・PC | Tagged | 1 Comment