【1】
<?php include 'header.php' ?>
文末のセミコロンが有りませんが、このソースは問題無く動いています。正常にwebサイトの共通headerがincludeされています。phpの構文チェックサイトの判定でもエラーは出ませんでした。正常に動作しているのはなぜでしょう?そもそも間違っていない、のでしょうか?(セミコロンが無い、なんていうのは、プログラムが動かない原因の第一要因になりそうな気がするのですが・・・)
【2】
<?php include('header.php');?>
という書き方を見たことがあります。正しい書き方は、PHP Manualに有るように、
<?php include 'header.php';?>
と書けば良いと思うのですが、これらの違いは何でしょうか?前者の書き方は何か意図が有るのでしょうか?
【3】
includeの引数にファイル名を指定する場合、ダブルクォートとシングルクォートでは、本来はどちらが正しいのでしょうか?
どうぞよろしくお願い致しますm(_ _)m
include は、関数ではなく制御構造で、マニュアルにもきちんと書かれていませんが、以下のような構文です。
include 式
つまり、'header.php' も ('header.php') も、式の値としては 'header.php' なので、どちらも同じように動作します。
次のも同じこと。
include 'header' + '.php';
同マニュアルでは、例4が include に指定するファイル名が式として解釈されることに触れています。
<?php // 正しく動作しない。「include(('vars.php') == 'OK')」、すなわち、「include('')」と評価される if (include('vars.php') == 'OK') { echo 'OK'; } // 正しく動作する if ((include 'vars.php') == 'OK') { echo 'OK'; } ?>
http://php.net/manual/ja/function.include.php#example-141
# コメントの日本語訳だけしてます
昔から、この手の思い違いは、たくさんあります。
有名なところで言うと、C言語の return 文。
return 0;
return(0);
どちらも正しく動作します。式 (0) の値は、0 なので。
return(0) なんて書くと、「分かってねえなあ」って、即座に突っ込まれたものです :-)
【1】
http://readygo.s8.xrea.com/php/php_doc01.php
複数の命令を書く時は1つの命令の区切りとして文の最後にセミコロン”;”をつけます。
ひとつしかなければ、セミコロンはいりません。
【2】
http://php-beginner.com/reference/loadfile/include.html
カッコのありなしは、どちらでも 判断できるように作られているぐらいしか言えないかと思います。
【3】
http://www.tryphp.net/2011/10/10/phpref-moziretsuatsukai/
●文字列は「"(ダブルクォート)」か「'(シングルクォート)」で囲む
●「"(ダブルクォート)」は変数展開される
●「"(ダブルクォート)」と「'(シングルクォート)」では
扱うエスケープ文字列が違う
変数にセットするような時は、ダブル。
しないときは シングル みたいな感じかな。
迅速な回答をありがとうございます。わかり易い参考リンクでした。
【1】
命令文の『区切り』にセミコロンが必要。
http://www.php.net/manual/ja/language.basic-syntax.instruction-separation.php
「PHP コードブロックの終了タグには自動的にセミコロンが含まれていると 認識されます」ともあったけど、これは知らなかった。
【2】
単純な間違いかと。
前者に特に意図がある訳ではなく、間違って覚えているか、他所のページを丸写ししただけなのでしょう。
http://www.php.net/manual/ja/function.include.php
「例4 インクルードの戻り値を比較する」のすぐ上
【3】
単引用符( ' )と二重引用符( " )との意味の違いはマニュアルを。
http://www.php.net/manual/ja/language.types.string.php
どちらが正しいという訳ではなく、最終的に予定している文字列を表現できていればどちらを使っても全く問題は無いでしょう。
この手のものは「後から見直した時にわかり易い」方が良いだろうとは思いますが、わかり易さに絶対的な基準がある訳も無い(個人個人の主観の問題)ので。
例えば、僕はできるだけ単引用符を使い、変数は連結する方向でやります。
(速度云々ではなく、単に読みやすいと思うから)
ありがとうございます。
>できるだけ単引用符を使い、変数は連結する方向でやります
具体例が参考になりました。
include は、関数ではなく制御構造で、マニュアルにもきちんと書かれていませんが、以下のような構文です。
include 式
つまり、'header.php' も ('header.php') も、式の値としては 'header.php' なので、どちらも同じように動作します。
次のも同じこと。
include 'header' + '.php';
同マニュアルでは、例4が include に指定するファイル名が式として解釈されることに触れています。
<?php // 正しく動作しない。「include(('vars.php') == 'OK')」、すなわち、「include('')」と評価される if (include('vars.php') == 'OK') { echo 'OK'; } // 正しく動作する if ((include 'vars.php') == 'OK') { echo 'OK'; } ?>
http://php.net/manual/ja/function.include.php#example-141
# コメントの日本語訳だけしてます
昔から、この手の思い違いは、たくさんあります。
有名なところで言うと、C言語の return 文。
return 0;
return(0);
どちらも正しく動作します。式 (0) の値は、0 なので。
return(0) なんて書くと、「分かってねえなあ」って、即座に突っ込まれたものです :-)
>関数なの?
制御構造に分類されているけど、
関数に似た動作をしていたりする特別な言語構造という言葉に返ります^^
質問者です。私の持っているphp入門書にはincludeについて一文しか書かれていないので、回答を面白く読ませて頂きました。ありがとうございました。
動かない時は、phpマニュアルも参考にしますが、まだ難しくて理解出来ない部分も有る状況です。
>関数なの?
2013/10/16 17:57:50制御構造に分類されているけど、
関数に似た動作をしていたりする特別な言語構造という言葉に返ります^^
質問者です。私の持っているphp入門書にはincludeについて一文しか書かれていないので、回答を面白く読ませて頂きました。ありがとうございました。
2013/10/17 16:53:33動かない時は、phpマニュアルも参考にしますが、まだ難しくて理解出来ない部分も有る状況です。