フルスタックエンジニアのノウハウ
2020.12.22    2021.03.05

PHPマニュアルを一緒に読み解こう!#5【基本的な構文】

PHPマニュアルを一緒に読み解こう!#5【基本的な構文】

この記事の動画版はこちら

チャンネル登録お願いします!


※この記事はPHPマニュアルの解説です。


PHPタグ【要点まとめ】


言語リファレンス > 基本的な構文 >「PHP タグ」の解説です。
マニュアルページを見ながらご覧ください。


PHPのエンジンは、ソースコードの中からPHPの「開始タグ <?php」と「終了タグ ?>」を探し、見つかったらその中に書かれている内容をPHP命令として解釈して実行します。


逆に言うと、PHPの開始タグと終了タグで囲まれた部分以外(例えばHTMLコードなど)は、PHPには無視されます。


こういった仕組みのため、PHPは色々な形式のドキュメントの中に埋め込むことが出来ます。


PHPの開始タグの後に「echo」を書いて、何かを出力するような場合、PHPの開始タグとechoを合わせて、省略することも出来ます。


例えば、このようにPHPの開始タグの後にechoを使って書くのと




このように短縮形を使って書くのとは、全く同じ動作になります。




echo命令を使って、何か特定の情報を出力する、というのはPHPでは頻繁に行いますので、簡単に書ける省略形が用意されている、ということですね。


なお、PHPの設定ファイルで、short_open_tagという設定を有効にすると、echoを使うか使わないかに関わらず、全てのPHPの開始タグを「<?」省略することも出来ます。




ただし、PHPの設定状態は動作させるサーバーによって異なることがありますので、どんなサーバーでも正常に動くように、省略形の開始タグ「<?」は使わないようにしましょう。ということですね。



また、ファイルの内容がPHPのみの場合は、このように終了タグを書かなくてもOKです。




逆に、この後にHTMLブロックなどを書く場合は、PHPブロックの終わりであることを示すために終了タグを書く必要があります。


ファイルの内容がPHPのみの場合、終了タグの後ろに余計な空白や改行が入ってしまうと、エラーとなることがありますので、PHPのみの場合はむしろ終了タグは省略するようにしましょう。


僕自身もこの現象に何度も悩まされたことがあります。



HTMLからの脱出【要点まとめ】


言語リファレンス > 基本的な構文 >「HTMLからの脱出」の解説です。
マニュアルページを見ながらご覧ください。




先ほどもあった通り、PHPは開始タグと終了タグで囲まれた部分以外は無視するため、この部分は、PHPには無視され、このHTMLがそのまま画面に表示されます。




そして、この部分はPHPの開始タグと終了タグに囲まれているため、PHPとして解析されます。




最後のこの部分は、PHPに無視され、HTMLがそのまま画面に表示されます。




基本的にはこのようになります。


しかし、例外があります。
それは、PHPの中で条件文が生きている場合です。


例えば、PHPブロックの中でif文で条件式が書かれていた場合、この条件式は、最後の「endif」まで生きていますので




if文の条件にマッチした場合のみ、この行の内容が出力されます。




そして、if文の条件にマッチしなかった場合のみ、elseの後に書かれている内容が出力されます。




このように、PHPブロックで条件文を書いた場合、その中に書かれている部分がPHPのタグで囲まれていなかったとしても、PHPの条件によって、表示されたり、読み飛ばされたりするということですね。


この部分は、毎回PHPのタグを終了させずに、全てを1つのPHPブロックとして書くことも出来ます。その場合は、何かを出力したい部分は「echo」や「print」命令を使って出力します。


ただ、出力したい内容が大量の場合は、毎行echoを書くのは大変だし、見づらくなってしまうので、上記のように一度PHPブロックを終わらせた方が、見やすいということですね。


ただし、そのようにした場合、本来はどちらかしか書かれない内容が、ソースコード上は両方とも記載される形となり、XMLやXHTMLの場合はそれが原因でエラーになることもあるので、そういった場合はPHPタグを使ってecho命令などで出力しましょう。ということですね。



命令の分離【要点まとめ】


言語リファレンス > 基本的な構文 >「命令の分離」の解説です。
マニュアルページを見ながらご覧ください。


C言語やPerl言語と同様に、PHPでもステートメント(1つの命令ですね)の区切りにはセミコロンを入力する必要があります。


ただし、PHPの終了タグにはセミコロンの意味も含まれているため、PHPブロックの最終行の命令にはセミコロンはあってもなくても構いません。


つまり、PHPブロックの中に命令が1行しか無い場合は、セミコロンを付けても省略しても、どちらでもOKです。




また、PHPの終了タグの直後に改行を入れても、その改行は削除されるため、このように改行したとしても、実行すると、改行無しで表示されます。




こうしたくない場合は、終了タグの直後にスペースを入れるか、echo命令で明示的に改行を出力する必要があります。



PHPブロックの書き方の例がいくつか記載されています。


開始タグと終了タグをそれぞれ改行して、ブロックとして見やすく書くことも出来ますし




1行にまとめて書くことも出来ます。


また、命令が1つしかない場合は、セミコロンを省略することも出来ます。




PHPブロックの後にHTMLなどを書かない場合は、終了タグを省略することも出来ます。




これについては、むしろ省略することが推奨されています。


省略しないと、予期せぬ空白が入ってしまったりするからです。



コメント


言語リファレンス > 基本的な構文 >「コメント」の解説です。
マニュアルページを見ながらご覧ください。


PHPのソースコード内にはコメントを書くことが出来ます。


コメントの書き方にはいくつか種類があり、まずこの1行コメントタイプは、スラッシュを2つ書くか、#を書くと、そこからがコメントの始まりとなり、改行されるかPHPブロックの終わりが来るまでがコメントとして扱われます。




改行を含んだ複数行のコメントを書きたい場合は、/*と、*/で囲みます。




囲まれた部分がコメントとして扱われます。


複数行のコメントを書く場合、コメントブロックの中に、さらにコメントブロックを書くとエラーになります。


青枠から、青枠までがコメントとして判断されるため、最後の*/が構文エラーになるという訳ですね。



おすすめ記事