PHPタグ
PHPコードは、PHPエンジンによって正しく識別・処理されるために、特定の「タグ」内に記述する必要があります。これらのタグはウェブサーバーに対し、タグで囲まれたコンテンツを通常のHTMLやクライアントサイドコードとしてではなく、PHPスクリプトとして解析(パース)するように指示を出す役割を果たします。
本章では、標準的なPHPタグ、非推奨となった短縮開始タグ、そしてモダンな開発で多用される「エコー短縮タグ」について詳しく解説します。
1. 標準PHPタグ
PHPコードブロックを開始・終了させる最も一般的で推奨される方法は、標準タグ <?php と ?> を使用することです。すべてのPHPコードはこの2つのタグの間に記述しなければなりません。タグの外側にある内容はすべてプレーンテキスト(通常はHTML)として扱われます。
<!DOCTYPE html>
<html>
<head>
<title>標準PHPタグの例</title>
</head>
<body>
<h1>ようこそ!</h1>
<?php
// これは標準的なPHPコードブロックです
echo "<p>このコンテンツは、標準タグを使用してPHPによって生成されました。</p>";
$name = "Alice";
echo "<p>こんにちは、" . $name . "さん!</p>";
?>
<p>これは純粋なHTMLコンテンツです。</p>
<?php
// 別のPHPコードブロック
echo "<p>1つのページ内で複数のPHPコードブロックを使用できます。</p>";
?>
</body>
</html>上記の例では、<?php ... ?> ブロック内の echo 文がサーバーで処理され、その出力結果(HTMLの段落)がブラウザに送信されます。その後、ブラウザは最終的なHTMLドキュメントをレンダリングします。
標準タグの使用は、すべてのPHPコンフィギュレーションで普遍的にサポートされており、PHPコードを記述する際のベストプラクティスとされています。これにより、チーム開発や異なるサーバーへのアプリケーションのデプロイにおいて、最大限の互換性と可読性が保証されます。
2. 短縮開始タグ(非推奨)
短縮開始タグ(Short Opening Tags)は、PHPコードブロックを開始する簡略化された形式で、<? と ?> を使用します。一見シンプルに見えますが、モダンなPHP開発では極めて非推奨であり、現在は「非推奨(Deprecated)」としてマークされています。
<!DOCTYPE html>
<html>
<head>
<title>短縮タグの例(使用は避けてください)</title>
</head>
<body>
<h1>短縮タグのデモ</h1>
<?
// これは短縮開始タグのコードブロックです
// すべてのサーバー設定で動作するとは限りません
echo "<p>このテキストは短縮開始タグを使用しています。</p>";
$framework = "Laravel";
echo "<p>私のお気に入りのPHPフレームワークは:" . $framework . "です。</p>";
?>
<p>これは通常のHTMLコンテンツです。</p>
</body>
</html>もしサーバー設定(php.ini)の short_open_tag ディレクティブが Off になっている場合、<? ... ?> を使用したスクリプトは正しく実行されません。この時、<? の部分は単なるテキストとして処理され、ページエラーが発生したり、ブラウザに意図しないコードがそのまま出力されたりする原因となります。
もう一つの問題は、XML宣言(同様に <?xml ... ?> を使用)との衝突リスクです。この曖昧さはパーサーの誤解を招き、特にXMLとPHPを混在させる環境において、コードの堅牢性を損なう可能性があります。これらの理由から、開発者は常に標準の <?php タグを一貫して使用すべきです。
3. エコー短縮タグ(モダンで推奨)
エコー短縮タグ(Echo Short Tag)は、「短縮出力タグ」とも呼ばれ、値をブラウザに素早く出力するための非常に便利で強く推奨される方法です。<?= 式 ?> という構文を採用しており、これは <?php echo 式; ?> と完全に同等です。
<!DOCTYPE html>
<html>
<head>
<title>エコー短縮タグの例</title>
</head>
<body>
<h1>エコー短縮タグ</h1>
<?php
$productName = "スマートウォッチ";
$price = 199.99;
?>
<p>商品名:<?= $productName ?></p>
<p>価格:$<?= $price ?></p>
<p>現在の年:<?= date("Y") ?></p>
<p>
<?php
// 下記の行は、上の <?= $productName ? > と同等です
echo "商品名(標準的なechoを使用):" . $productName;
?>
</p>
</body>
</html>短縮開始タグ <? とは異なり、エコー短縮タグ <?= はPHP 5.4.0以降、php.ini の short_open_tag の設定に関わらず常にデフォルトで利用可能です。そのため、HTMLテンプレート内に動的な値を迅速に埋め込むための安全かつモダンな機能として、コードの冗長さを大幅に削減してくれます。
テンプレートエンジンを使用する環境で、変数や関数の戻り値を頻繁に表示させる必要がある場合に、特にその威力を発揮します。
4. 実用的な比較
| 特性 | 構文 | short_open_tag への依存 | ステータス | 推奨シーン |
|---|---|---|---|---|
| 標準タグ | <?php ... ?> | なし | 推奨 | すべての通常のPHPロジックと実行 |
| 短縮開始タグ | <? ... ?> | あり(有効化が必要) | 非推奨 | 使用禁止(互換性の問題あり) |
| エコー短縮タグ | <?= 表現 ?> | なし(PHP 5.4.0以降) | 推奨 | 変数や式の結果を素早く出力する際 |
PHPファイルを作成する際、ロジック処理、変数の宣言、複雑な操作を含むコードブロックには必ず <?php を使用してください。一方で、単に変数や単純な式の結果を表示したいだけであれば、<?= ... ?> が最もクリーンで効率的な選択肢となります。