ここからついに、PHPのプログラミングがはじまります。
PHPははじめ、『ホームページ制作を簡単にするための、便利スクリプト』として作られました。その歴史を辿っていくこととしましょう。
まずは、ホームページに共通のパーツを切り出して、外部読み込みをしてみます。
技術面の解説
はじめにPHPについて、ごく基本的なことを挙げておきます。
ファイル拡張子
PHPプログラムが書かれたファイルの拡張子は「xxxx.php」のようにする必要があります。
PHPタグ
PHPは<?php **** ?>のように、専用のPHPタグで囲む必要があります。
なお、プログラムの最後がPHPのコードで終わる場合、終了タグ「?>」はつけない方がよいです。(不要な改行コードや空白などが出力されるため、バグの原因となります)
行の閉じ方
1行の終わりには、「;(セミコロン)」を書く必要があります。
(if文などの条件分岐構文や、for文などの繰り返し構文の行には必要ありません)
変数
PHPでは、一般的なプログラミング言語のように、変数を利用できます。
変数を利用することで、文字列や数値などを格納しておき、加工したり、他の場所で出力することができます。
変数は「$xxx」のように、頭に「$」をつけた英数字で表現されます。
変数に値を入れることを、代入と表現します。
文字列を扱う
<?php $str = "あいうえお"; $str = $str . "かきくけこ"; echo $str;
たとえば上記では、画面に「あいうえおかきくけこ」が出力されます。
(echoは、変数の中身や値を出力するための制御構文です)
下記のように書き換えることもできます。
<?php $str = "あいうえお"; $str .= "かきくけこ"; echo $str;
(.=という書き方をすると、元の変数の値に文字列を追加します)
このように、文字列は””で囲んで扱います。
数値を扱う
<?php $int = 10; $int = $int + 15; echo $int;
たとえば上記では、画面に「25」が出力されます。
下記のように書き換えることもできます。
<?php $int = 10; $int += 15; echo $int;
include/require構文
PHPのinclude構文を使うと、別のファイルを読み込んで出力することができます。
HTMLファイルを読み込めば、その場に読み込んだ中身を出力します。
また、PHPのライブラリなどを読み込めば、メモリに関数やクラスを展開します。
ちなみに兄弟分の「require」という構文がありますが、こちらは、ファイルが存在しなかった場合にエラーを出力してプログラムが停止します。
セキュリティ性で考えると、『目的のファイルがなかったら停止した方がよい』ことが多いため、この講座では「require」のみを使います。
あいうえお
<?php require "file.html";
上記では、画面に「あいうえお」が出力されます。
コメント
プログラムの中では、コメント構文を使ってメモ書きなどを行うことができます。コメント行はプログラムとして解釈されず、飛ばされて実行されます。
コメントには二種類があり、「//」を使って1行をコメントアウトする方式と、「/*」「*/」で挟んで複数行をコメントアウトする形式があります。
<?php // これはメモ書き echo "abc"; /* これはメモ書き */ echo "def";
ホームページのPHP化
以前作成したブログサイト(の雛形となるHTML)をPHP化して、ローカルApache経由で表示してみます。
ディレクトリの作成
C:\xampp\htdocs\step1-040
を作成してください。
PHPファイルの作成
以下のプログラムを設置します。(以前のHTML版の拡張子を変えただけです)
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>トップ | treiの日記</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <h1>treiの日記</h1> <p> 閲覧ありがとうございます。<br> こちらはtreiの日記ページです。 </p> <h2>メニュー</h2> <ul> <li> <a href="blog.php">ブログ</a> </li> <li> <a href="inquiry.php">お問い合わせ</a> </li> </ul> </body> </html>
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>blog | treiの日記</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <h1>blog</h1> <p> 準備中 </p> <hr> <a href="./">トップへ戻る</a> </body> </html>
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>お問い合わせ | treiの日記</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <h1>お問い合わせ</h1> <p> 準備中 </p> <hr> <a href="./">トップへ戻る</a> </body> </html>
body{ padding: 10px; } h1{ border-bottom: 2px solid #333333; margin-top: 0; margin-bottom: 20px; }
Apache経由で実行
http://localhost/step1-040/
をブラウザで開くと、サイトが表示されます。
各ページ間でのリンクも動作するか確認してください。
requireで共通要素の切り出し
サイトを管理する上で、サイトのヘッダやフッタ部分を共通の管理にしておきたいケースが出てきます。
そこで、ヘッダ部分とフッタ部分をそれぞれ、「header.php」「footer.php」として分離します。
修正結果
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title><?=$page_title?> | treiの日記</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <h1><?=$page_title?></h1>
<hr> <a href="./">トップへ戻る</a> </body> </html>
<?php $page_title = "トップページ";?> <?php require "header.php";?> <p> 閲覧ありがとうございます。<br> こちらはtreiの日記ページです。 </p> <h2>メニュー</h2> <ul> <li> <a href="blog.php">ブログ</a> </li> <li> <a href="inquiry.php">お問い合わせ</a> </li> </ul> <?php require "footer.php";?>
<?php $page_title = "ブログ";?> <?php require "header.php";?> <p> 準備中 </p> <?php require "footer.php";?>
<?php $page_title = "お問い合わせ";?> <?php require "header.php";?> <p> 準備中 </p> <?php require "footer.php";?>
これによって『共通要素を一元管理できるように』なりました。
ページタイトルの変数化
上記のソースコードの中で注目してほしいのが、
<?php $page_title = "トップページ";?>
の部分と、
<title><?=$page_title?> | treiの日記</title> ・・・・・・ <h1><?=$page_title?></h1>
の部分です。
まず、各ページの一番上でページタイトルを$page_title変数に格納し、共通パーツであるheader.phpで出力することで、ページごとに適切なタイトルを表示できるようにしています。
変数の扱いについて
せっかくなので、変数についてもう少し説明しておきます。
暗黙的な型
一般のプログラミング言語では、変数はそれぞれ型というものがあり、
- integer型(1/2/3/100/-199/-22などの数値型)
- float型(0.1/10.9などの浮動小数型)
- string型(abc/あいうえおなどの文字列型)
- array型(配列型。追って説明します)
- object型(オブジェクト型。追って説明します)
などがあります。
PHPでも型が存在するのですが、特に明確に宣言しなくても、自動で初期化されます。
ですので、
$param= "abc";
と書けば$paramはstring型として初期化され、
$param = 123;
と書けば$paramはinteger型として初期化されます。
文字列型について
文字列の結合
文字列の結合については、以下のように、「.」を使って行います。
$param = "ABC" . "DEF"; $echo $param; // 「ABCDEF」と出力されます
中括弧({})での結合
ダブルクォート(”)の中に中括弧({})をつけることで変数を結合できます。
$param1 = "ABC"; $param2 = "DEF"; $param = "結合した値は{$param1}{$param2}です。"; $echo $param; // 「結合した値はABCDEFです」と出力されます
改行コード
PHPでも一般的なプログラム言語と同様に、「\n」で改行コードを扱うことができます。
プログラムの中で改行コードを出力する場合は、以下のように書きます。
$param = "ABC\nDEF"; echo $param; // ABC[改行]DEF が出力
シングルクォート
シングルクォート(’)でも文字列を囲んで変数に代入することができます。
$param = 'ABC' . 'DEF'; echo $param; // ABCDEF が出力
しかしこの場合は、上記の{}による結合ができません。
また、変数の中に改行コード(\n)を含めることもできません。
使い分けるのが大変な場合は、全部ダブルクォート(”)で書くようにしましょう。
数値型について
+-*/などの記号を使って、演算することができます。
$param = 1 + 2; echo $param; // 3 が出力
$param = 10 / 2; echo $param; // 5 が出力
$param = 10 - 2; echo $param; // 8 が出力
$param = 2 - 10; echo $param; // -8 が出力
$param = 10 * 2; echo $param; // 20 が出力
また、特殊なものに、%という演算子があります。これを使うと、割り算の余りを取得できます。
$param = 10 / 4; echo $param; // 2 が出力
$param = 10 / 5; echo $param; // 0 が出力
$param = 10 / 3; echo $param; // 1 が出力