ホームページ >バックエンド開発 >PHPチュートリアル >PHP を正しく理解する方法 includescope_PHP チュートリアル
多くのプログラマが
を使用しています。 注: このドキュメントは 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. インクルードされたファイルで定義されたすべての関数とクラスは、インクルード後にインクルードされたファイル内でグローバル スコープを持ちます