0

次のコードを含むファイルtest.phpがありました

<?php
//name of this file is test.php
$foo = "some value";
include_once 'extras.php';
$bar = "another value";
echo "test.php: foo is $foo and bar is $bar <br />";
?>

コードを含む別のファイル

<?php
echo "extras.php: foo is $foo and bar is $bar <br />";
?>

出力は、extras.php からの echo ステートメントが test.php にも含まれていることを示していますが、初心者である私は、include_once または include 構成要素は変数と関数のみを処理し、他のものは無視すると想定していました。正解は何ですか、ガイドしてください。ありがとうございました

4

4 に答える 4

1

あなたはよりよく理解includeし、include_once

たとえば、3 つのファイルを取ることができます。

関数.PHP

<?php
function foo(){
echo 'some code';
}
?>

GLOBALS.PHP

<?php
include('FUNCTIONS.PHP');
foo();
?>

HEADER.PHP

<?php
include('FUNCTIONS.PHP');
include('GLOBALS.PHP');
foo();
?>

開こうとすると、すでに含まれているHEADER.PHPため、エラーが発生します。that was already defined in , and I also included in -というエラーが表示されます。これは、 2 回インクルードしたことを意味します。GLOBALS.PHPFUNCTIONS.PHPfunction foo()GLOBALS.PHPHEADER.PHPFUNCTIONS.PHP

したがって、必ず 1 回だけ含めるようにするには、関数FUNCTIONS.PHPを使用する必要があるため、次のようになります。include_once()HEADER.PHP

<?php
include_once('FUNCTIONS.PHP');
include('GLOBALS.PHP');
?>

PHP はファイルを 1 回だけHEADER.PHPインクルードすることを認識しているため、を開いてもエラーは発生しなくなりました。FUNCTIONS.PHP

したがって、エラーが発生しないようにするには、php コードinclude_once()で function の代わりに使用するのが安全です。include()

PHPコードが乱雑であることがわかっている場合は、を使用するinclude_once()方が安全ですが、すべてのコードを追跡している場合は、include()関数を使用しても問題ありません。

于 2012-08-11T13:22:36.953 に答える
1

include_once以前にインクルードされていない限り、スクリプト全体を呼び出しスクリプトにインクルードします。これには、すべての変数、関数、echos...すべてが含まれます。実際には、コードは行があるスペースにインポートされるため、呼び出し元のスクリプトで ed スクリプトinclude_onceの変数を参照できます。included

includes が処理された後、投稿したスクリプトは次のようになります。

<?php
//name of this file is test.php
$foo = "some value";
echo "extras.php: foo is $foo and bar is $bar <br />";
$bar = "another value";
echo "test.php: foo is $foo and bar is $bar <br />";
?>

ファイルが見つからない場合、スクリプトはエラーにincludeなりませんが、d スクリプトで設定された変数は設定されないことに注意してください。そのためには、 を使用しますrequire_once

于 2012-08-11T13:15:25.477 に答える
1

include_once「ファイルがまだ含まれていない場合は、この行を削除して、ファイルの内容をここに貼り付けてください」と考えることができます。

インクルードされたファイルで定義された変数の変数スコープに関連するこのような考え方には、私にとってやや奇妙な例外が 1 つあります (最終的にはグローバル スコープになります)。詳細については、こちらをご覧ください。

于 2012-08-11T13:18:33.400 に答える
0

まず、PHP マニュアルのincludeおよびinclude_once関数のリファレンスをよく読んでください。短い話 - 両方のステートメントは基本的に元の/インクルードされたファイルのコードをマージするため、関数、変数、クラス、エコーステートメントなど、インクルードされたファイルのすべてがソースファイルで実行/利用可能になります... (ただし、include_once as asその名前は、そこにいくつの include_once ステートメントを入れたかに関係なく、ファイルがまだ含まれていない場合は、最初に 1 回だけファイルを含めることを既に示唆しています)...

于 2012-08-11T13:19:36.393 に答える