2012-04-05 27 views
1

include/requre_onceに関する簡単な質問。私はいくつかのページに共通するいくつかのコードを持っています。私は、コードの繰り返しではなく、各ページからの呼び出しがファイルにある方が良いと感じています。ループ内のinclude_onceまたはrequire_once PHP

whileループでinclude_onceを呼び出すと、私はinclude( 'file.php')を使用する必要があることに気づいたか、文字通り読み込み(そして表示)します。私は、最初のループにロードし、キャッシュのコードをループの各反復処理にディスクにアクセスする必要がないように保持することを想定していました(間違って)。

"load_once_and_cache"タイプのコマンドを見回しましたが、何も見つかりませんでした。

誰にもこれに関する提案がありますか、各ページにコードを掲載するのは唯一のオプションですか。

もう一度おねがいします!

+0

私たちは本当にあなたがインクルードファイルをキャッシュするか、それ以外の場合はパフォーマンスを大幅に低下させる必要があるような量と使用量のウェブサイトを話していますか? - EDIT:BTW、これは、インクルードファイルがコンテンツに関連しており、ライブラリ/機能に関連していないと仮定しています。単なるPHPメソッド/クラス/コードの場合は、複数回含める必要はありません。 –

答えて

5

これは、ループにコンテンツを取得する方法が非常に非効率的です。 PHPは、include()呼び出しごとにディスクからファイルを読み込む必要があります。関数を作成するほうがはるかに優れています(インクルードされたファイル内にある可能性があります)。ファンクションを定義しているファイルを1回だけインクルードし、ループ内の関数を呼び出します。

おそらく、ビューをコーディングするときを除いて、インクルードされたファイルの出力に依存するのは、必ずしも良い習慣ではありません。ループの中にファイルを含めることを要求すると、デバッグやメンテナンスが困難なフロー制御とファイルの混在が混在することになります。

+0

PHP 7では、それはforループから戻ります – peter

1

あなたの周りの空気は、複雑な構造や膨大な量のコードのような臭いがあるので、私はあなたが物事を終わらせるためにOOP技術を使用していると仮定します。この場合

、多分あなたは、より効率的かつ迅速な方法として、オートロードクラスを検討したいと思うでしょうが:

http://php.net/manual/en/language.oop5.autoload.php

あなたはまた、完全に何が起こっているか理解するためには、コメントを読む必要があるでしょうし、様々な状況を管理するためのいくつかの本当の方法を見つける。