2012-05-08 5 views
-1

footer.phpすることはできません。は、両方のheader.phpの中で()同じファイルをのinclude_onceと3つの.phpファイルがあります

vars.php

$foo = 'bar'; 

header.phpの:

include_once("vars.php"); 
    echo "In header: $foo"; 

footer.php:abovで

include_once("vars.php"); 
    echo "In footer: $foo"; 

$ fooはfooter.phpに設定されていません。 header.phpのinclude_once()を削除すると、$ fooはfooter.phpに設定されますが、header.phpには設定されません。

私はどこか馬鹿にしていると思っていますが、私の人生では私はそれを見つけることができません。

答えて

2

..._once()関数は、include/requireが発生した場所を気にしません。一度ファイルがインクルードされると、その特定のスクリプト実行の実行中にどこでもinclude_once/require_onceが再度実行されることはありません。

異なる場所に複数回含める必要がある場合は、_once()バリアントを使用しないでください。

+0

しかし、既に含まれているファイルの変数をその行の下に表示しないでください。私は、 '..._ once()'関数は重複を防ぐ役割しか果たしていないという印象を受けました。 –

+0

ファイルはincludeディレクティブのスコープにロードされます。ヘッダーが関数呼び出しの中に含まれていると、インクルードされた変数はその関数内にのみ存在しますが、グローバルな "load once"スロットを使い切ってしまいます。 –

+0

。ありがとう! –

2

include_once-に1度書いたからです。

include_onceをheader.phpに保存する場合は、いずれにしても$fooを含める必要があります。 footer.phpの前に道を下って$fooを変更していないことを確認してください。

関連する問題