ホームページ >バックエンド開発 >PHPチュートリアル >PHP に関する注意事項には変数スコープが含まれます
著者: zhanhaiiliang 日付: 2015-04-17
まず、include を読んでください。これは、「include に含まれるコードは、include が配置されている行の変数スコープを継承する」ことを強調しています。
ファイルがインクルードされるとき、ここで、インクルードされたコードは、インクルード行の変数スコープを継承します。その時点から、呼び出し側ファイルのその行で使用可能な変数は、呼び出されたファイルでも使用できるようになります。ただし、インクルード ファイルで定義されたすべての関数とクラスにはグローバル スコープがあります。
これは、インクルード内のコードは、その行でアクセスできるすべての関連変数にアクセスできることを意味します。
以下のように、非常に奇妙な書き方を検証するために test.php test1.php を書きます:
test.php
<?phpclass A { public function __construct() { include 'test1.php'; } }$a = new A();var_dump($a);
test1.php
<?php $this->a = 1; $this->b = 2;
実行出力は次のとおりです:
object(A)#1 (2) { ["a"]=> int(1) ["b"]=> int(2)}
これは、 include ファイル コード内のコードは、include 行の変数スコープを継承しており、$this 変数にアクセスできます。