• ベストアンサー

共通部品の外部ファイル化

ちょっとした疑問なのですが、分かる方がいれば、教えてください。 サイトを作っていて、何度も出てくる部分は、外部ファイル化して、それを呼び出すようにすると思います。 このとき、 (1)変数で定義しておくのが良いのか、 (2)関数で定義しておくのが良いのか、 理由を含めて教えてください。 たとえば、ページのフッター部分を (1) $footer = <div id=footer>Copy light ....<div> で定義しておいて、各ページで$footerを呼び出す。 (2) function footer(){  $footer = "<div id=footer>Copy light ....<div>";  return $footer; } と定義しておいて、各ページでfooter()を呼び出す。 (1)でコードを書いていたのですが、 (2)の方が、見易く、使わない関数が呼ばれないなら、処理速度も早いのかな?という気もしてきたもので。。。。 以上、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.3

ちょっと趣旨から外れるかもしれませんが、 フッターやヘッダーなどの完全に固定的なHTMLならば、 footer.html や header.html 等と作っておいて include "./footer.html"; すればいいだけです 1行程度の固定化した文面ならば define ちょっとした処理ならばfunction化 フクザツな処理をさせたいとか、その場その場で形がかわってゆくものであればclass化 って感じかなぁ なんとなく(´・ω・`)

その他の回答 (3)

回答No.4

個人的な経験によりますが外部ファイルには関数の単位以上のものしか書いてはいけません。 なぜなら変数や処理をグローバルに書くと外部ファイルを読み込むだけで 読み込みもとの変数がいきなり書き換えられてしまう事が起こります。 その結果解決の難しい依存関係が発生します。 こういった依存関係で破綻が発生すると手がつけられなくなります。 関数にしておけば読み込み元で関数を呼び出さない限り変数が書き換えられる事もありません。 出来るならクラス、最小でも関数にしておいた方が無難です。 それでもクラスのネーミング規則を誤ると破綻が発生する事が有ります。 しかし大きなブロックになっているので変数ほど大量に存在しないので衝突する確立が減ります。 後inu2様が仰る様に固定的なものはHTMLファイルにして読み込んだ方がスマートだと思います。

xyz_1990
質問者

お礼

まとめて、お礼を記入させていただきます。 大変勉強になりました。 変数は使わないようにしたいと思います。 ありがとうございました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

外部ファイル化するときはなるべくクラス化して 競合が起きにくくするようにするとよいかと思います。 //main.php <?PHP include "common.inc"; $common=new common; print $common->footer(); ?> //common.inc <?PHP class common{ function footer(){ $footer = "<div id=footer>Copy light ....<div>"; return $footer; } } ?>

  • studio_0
  • ベストアンサー率50% (5/10)
回答No.1

私は(2)を採用します。グローバル変数はなるべく作らない方がよいと思いますし、(1)ですと、数が増えるとサーバー側に余計な負荷がかかると思います。