ホームページ  >  記事  >  バックエンド開発  >  一緒に使用されるphpのグローバル変数とクラスの完全な分析_PHPチュートリアル

一緒に使用されるphpのグローバル変数とクラスの完全な分析_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-14 10:11:081088ブラウズ

ケース 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 はローカル変数として扱われ、参照できなくなります。 。 。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/477354.html技術記事ケース 1: Father.php は次のように定義されます: ?php $jack = 1000; ?children.php は次のように定義されます: ?php require(father.php); Children.php が実行されると、出力は 123 になります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。