ケース 1:
father.php は次のように定義されます:
$ジャック = 1000;
?>
children.php は次のように定義されています:
require("father.php");
$ジャック=123;
echo $jack."/n";
?>
phpchildren.php
走行出力は123です
$jack=123 をコメントアウトすると、実行結果は 1000 になります。 $jack=123 を require("father.php"); の前に置くと、実行結果は 1000 になります。
理解しやすい: PHP は説明して実行します。説明された場所であればどこでも実行されます。 。 $jack と同様に、これはグローバル変数です。たとえば、最初の場合、最初に使用するときは 1000 であり、これは必須です
。を実行すると、結果が123に変更されたため、実行結果の出力は123になります。
ケース 2:
children.php コードは次のように変更されます:
require("father.php");
関数testJack(){
if(!isset($jack)){
echo '$jack は null'."/n";
}
}//テストジャック
テストジャック();
?>
phpchildren.php
実行結果は次のようになります: $jack は null です。つまり、testJack() で参照される $jack はローカル変数です。
global キーワードを使用し、$jack をグローバル変数として宣言すると、コードは次のように変更されます:
require("father.php");
関数testJack(){
グローバル $jack;
if(!isset($jack)){
echo '$jack は null'."/n";
}その他{
echo '$jack は null ではありません'."/n";
}
}//テストジャック
テストジャック();
?>
演算結果は$jack is not null!
ケース 3:
children.php コードは次のとおりです:
require("father.php");
クラスジャックテスト{
パブリック関数testJack(){
if(!isset($jack)){
echo '$jack は null'."/n";
}その他{
echo '$jack は null ではありません'."/n";
}
}//テストジャック
}
$jackTest = 新しい JackTest();
$jackTest->testJack();
?>
実行結果の出力: $jack は null です
これは、クラス内のこの関数の $jack がローカル変数であるためです。
関数testJackの先頭にglobal $jack;を追加すると、$jack is not nullが出力されます。
分かりやすくなりました。
ケース 4:
ファイル名をパラメータとして使用する動的ロード、コードは次のとおりです:
$casefile = $_SERVER['argv'][1];
echo $casefile."/n";
require($casefile);
echo $jack."/n";
?>
php Children.php Father.php を実行します
結果は以下の通りです:
父.php
1000
つまり、ダイナミックローダーは正常に実行されました。 。
ケース 5:
動的読み込みとクラス定義を組み合わせる:
ディレクトリの関係は次のとおりです:
|- c.php
|- Bfold - b.php
|- Afold - a.class.php (内部の関数は ../Bfold/b.php を参照します)
つまり、クラス a.class は c.php の新しいもので、a.class.php の関数は Bfold フォルダーの下に b.php を必要とします。この require (../Bfold/b.php) はエラーを報告します。 、警告: ……
現在サーバーが c.php ファイルを実行しているため、php がそれを解析するとき、パスは c.php に対する相対パスになります。(../Bfold/b.php) を (Bfold/b .php) に変更してみてください。エラーはありません。
以下は、関数内での require_once (A.php) の使用を示すプログラム例です。
require_once の理解:
require_once(A.php); というステートメントが B.php で参照されているとします。 。
これは実際には、匿名ラムダ関数 A.php を呼び出して実行するのと同じです。以下に示すように:
C.php は関数呼び出しで B.php を必要とします------》
B.php は通常のステートメントで A.php を必要とします--------》
A.php
ここで php B.php を呼び出します。B.php は通常のステートメントで require を使用して A.php を呼び出し、A.php は A に関連するグローバル変数であるその変数を B.php 環境に登録します。 B.php はルート呼び出しファイルであるため、その実行環境はグローバル環境です。したがって、A.php ファイル内の変数は B.php で通常どおり使用できます。
ここで、php C.php を呼び出します。次に、C が関数内で require を使用して B.php を呼び出し、次に B が A を呼び出します。この呼び出しプロセス中、B と A のルート動作環境が C の呼び出し関数であるように感じられます。しかし、C の呼び出し関数が B と A の変数を使用したい場合は、方法がありません。 。
グローバル $a を使用して参照する場合、この場合 $a はグローバル変数に属さないため、参照できません。
$a を使用して参照すると、$a はローカル変数として扱われ、参照できなくなります。 。 。