質問: includeファイルの正式な読み込み方(例えば、文字コードの設定等) いつもお世話になっております。 環境/php5.2.5、sqlite3 内容は単純です。 a.php から、b.php をincludeする場合の、 「b.phpのコーディングで気をつけるべき点」について、教えて下さい。 a.phpの中では、 例えば、 header('content-type:text/html; charset=utf-8'); error_reporting(e_all); のようなことが書かれているとします。 その上で、 b.phpについても、同様に、上記2行を記載するのは、 スマートではないですよね? つまり、 結局includeされるのですから、 a.phpでしていることを、b.phpでもするのでは、 同じことを2度していることになり、冗長なのでは? という意味です。 意味のある繰り返しならば良いですが、この場合には、 意味があるとは思えませんので、 スマートではない、と私は思っているわけです。 では、b.php では、上記のような記述は必要ないのか、 と考えると、自信を持って、イエスと言えない自分がいます。 (b.phpでも、文字コードを「utf-8」にしたり、 エラー出力を「e_all」にしたかったりする、という前提でのお話です。) ちなみに、 b.php の中で、phpコーディングをする際に、 開始タグphp、終了タグ? はそれぞれ必要なのでしょうか? 必要だろう、という認識のもと、現在コーディングしていますが、 無くても良かったりするのでしょうか。笑 (初歩的な質問で、すみません。) どなたか、このinclude周りのタシナミについて、 アドバイスをお願い致します。
回答: php ?の「?>」のほうは記述しなくても良いようです。 ?>の後ろに、改行でもあったりすると、ソレも文字の出力とされてしまうため、その後にheader関数でヘッダを出力、session_startしようとするとコケる、ということもあるので、その対策だそうです。(私自身はいつも閉じてますが。) 開始タグ「php」に関しては必須です。スクリプトの開始には必ずつけてください。 include、include_once、require、require_once、と別ファイルを読み出す制御構造はあるわけですが、xxxx_onceのほうは、同一ファイルを2度読まないという特徴があります。 基本的に2度読むことなんてほとんど無いと思いますので、xxxx_onceのほうを使った方が良いと思います。 また、includeとrequireの違いですが、 http://php.benscom.com/manual/ja/function.include.php この通りで、requireの場合、該当するファイルが読み込めない(ファイルが存在しないなど)があった場合、エラーでスクリプトが終了します。 includeの場合は、warningが出るものの、その後のスクリプトは実行します。 該当ファイルが読み込めなくても実行したいことなんてほとんどないので、requireを使った方が良いです。 上記より、別ファイルの読み込みには、require_onceを使うということになります。 次に、別のファイルを読み込む件について、作法というか考え方に関しては、それぞれある程度意味のまとまりを作ってやるというところになると思います。基本、クラスの考え方と一緒で、 一つのファイル内に記載されている内容はある一定の意味の塊としてやらないと、どこで何やったかわからなくなると思います。 例えば、設定値は全てconfig.phpに記述して、プログラムの動作に必ず必要な処理は、init.phpに書いて、汎用的に使うユーザ関数群は、functions.phpに書いて、とか。 そうすれば、コンテンツを作る際に、 ----contents.php------