ホームページ >バックエンド開発 >PHPチュートリアル >PHP を正しく理解する方法 includescope_PHP チュートリアル

PHP を正しく理解する方法 includescope_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-15 13:34:11778ブラウズ

多くのプログラマが

を使用しています。 注: このドキュメントは include ステートメントに基づいていますが、require ステートメントにも適用されます。この 2 つの構造は、インクルードの失敗の処理方法を除いて同一です。 include() は、インクルードが失敗した場合に警告を生成して実行を続行しますが、require() は致命的なエラーを引き起こします。つまり、ファイルが見つからないときにページの処理を停止したい場合は require() を使用し、それ以外の場合は include() を使用します。

PHP インクルード スコープ 1。 c

<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span> ?php  </span></span></li><li><span>$</span><span class="attribute">color</span><span> = </span><span class="attribute-value">'green'</span><span>;  </span></li><li class="alt"><span>$</span><span class="attribute">fruit</span><span> = </span><span class="attribute-value">'apple'</span><span>;  </span></li><li><span class="tag">?></span><span> </span></span></li></ol>
<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span> ?php  </span></span></li><li><span>function foo()  </span></li><li class="alt"><span>{  </span></li><li><span>global $color;  </span></li><li class="alt"><span>include 'vars.php';  </span></li><li><span>echo "A $color $fruit";  </span></li><li class="alt"><span>}  </span></li><li><span>foo();   </span></li><li class="alt"><span>// A green apple  </span></li><li><span>echo "A $color $fruit";   </span></li><li class="alt"><span>// A green  </span></li><li><span class="tag">?></span><span>  </span></span></li></ol>

次の例からわかります:

(1) インクルードされるファイル内の変数の PHP インクルード スコープは、それを含むファイルが配置されているスコープに従います。つまり、関数内で include を使用して他のファイルの変数をインクルードし、これらの変数のスコープは関数内にあります。

(2) $color の値は foo() 関数の外で出力できますが、これは (1) の規定に違反しません。これは、関数の先頭で $color がグローバルとして宣言されているためです (foo() 関数の外側に $color 変数はありませんが、この時点の $color 変数は vars.php の $color 変数ではなく、 「global」として必須宣言 新しい変数には、現時点では値が割り当てられていません。 vars.php に以下が含まれている場合、(1) の原則に従って、vars.php 内の $color 変数が自動的に割り当てられます。関数内のスコープなので、その値はグローバルです 変数 $color の値)

PHP にはスコープ 2 が含まれます。関数とクラスのスコープ

<ol class="dp-xml">
<li class="alt"><span><span class="tag"><</span><span> ?php  </span></span></li><li><span>class ClassB {  </span></li><li class="alt"><span>/**  </span></li><li><span>* constructor  </span></li><li class="alt"><span>*/  </span></li><li><span>public function __construct(){}  </span></li><li class="alt"><span>/**  </span></li><li><span>* destructor  </span></li><li class="alt"><span>*/  </span></li><li><span>public function __destruct() {}  </span></li><li class="alt"><span>public function printit() {  </span></li><li><span>echo 'print it in ClassB.</span><span class="tag"><</span><span class="tag-name">br</span><span> </span><span class="tag">/></span><span>';  </span></span></li>
<li class="alt"><span>}   </span></li>
<li><span>}  </span></li>
<li class="alt"><span>function show_func_included() {  </span></li>
<li>
<span>echo 'show_func_included</span><span class="tag"><</span><span class="tag-name">br</span><span class="tag">/></span><span>';  </span>
</li>
<li class="alt"><span>}  </span></li>
<li>
<span class="tag">?></span><span> </span>
</li>
</ol>
<ol class="dp-xml">
<li class="alt"><span><span class="tag"><</span><span> ?php  </span></span></li><li><span>function include_class() {  </span></li><li class="alt"><span>include('classb.php');  </span></li><li><span>}  </span></li><li class="alt"><span>include_class();  </span></li><li><span>$</span><span class="attribute">objB</span><span> = </span><span class="attribute-value">new</span><span> ClassB();  </span></li><li class="alt"><span>$objB-</span><span class="tag">></span><span>printit();   </span></span></li>
<li><span>// print it in ClassB.  </span></li>
<li class="alt"><span>show_func_included()   </span></li>
<li><span>// show_func_included  </span></li>
<li class="alt">
<span class="tag">?></span><span>  </span>
</li>
</ol>

この例からわかります:

すべての関数インクルードされたファイルで定義されたクラスがインクルードされます。 最後に、インクルードされたすべてのファイルはグローバル スコープを持ちます

結論:

1. インクルードされたファイル内の変数の PHP インクルード スコープは、インクルードされたファイルのスコープに従います (変更されません)。位置しています。
2. インクルードされたファイルで定義されたすべての関数とクラスは、インクルード後にインクルードされたファイル内でグローバル スコープを持ちます


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/446001.html技術記事多くのプログラマーが使用しています。 注: このドキュメントは include ステートメントに基づいていますが、require ステートメントにも適用されます。この 2 つの構造は、インクルード失敗の処理方法を除いてまったく同じです: インクルード失敗時...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。