PHPにおけるインクルードファイルの変数スコープに関する研究

WBOY
リリース: 2016-08-08 09:22:50
オリジナル
847 人が閲覧しました

php では、ファイルをインクルードする必要がある場合があります。たとえば、以前フレームワークを書いていたとき、ネイティブ PHP をテンプレートとして使用し、そのテンプレート ファイルを導入する表示メソッドを記述する予定でしたが、これは私の想像にすぎませんでした。

書き終えた後、テンプレート内のすべての変数が未定義であることがわかりました。さまざまな調査と情報の検索を通じて、ファイルを含める場合のいくつかの状況における範囲をまとめました。

最初の状況: ファイル A にはファイル B が含まれており、A の変数はファイル B で呼び出すことができます。

A ファイルコード:

<?<span>php
 </span><span>$aaa</span> = '123'<span>;
 
 </span><span>include</span> "B.php";
ログイン後にコピー

B ファイルコード:

<?<span>php

</span><span>echo</span><span>$aaa</span>;
ログイン後にコピー

はコンテンツを正常に出力できます。

2 番目のケース: ファイル A にファイル B が含まれており、ファイル B の変数をファイル A で呼び出すことができます。

A ファイルコード:

<?<span>php

</span><span>include</span> "B.php"<span>;

</span><span>echo</span><span>$fff</span>;
ログイン後にコピー

B ファイルコード:

<?<span>php

</span><span>$fff</span> = 'i am f';
ログイン後にコピー

この時点では、内容は正常に出力できます。

3 番目の状況: ファイル A 内の特定のクラスのメソッドでファイル B が呼び出され、メソッド内の変数がファイル B で呼び出されます。

A ファイルコード:

<?<span>php

</span><span>class</span><span> test{
    </span><span>public</span><span>function</span><span> show(){
        </span><span>$bbb</span> = 'abc'<span>;
        </span><span>include</span> "B.php"<span>;
    }
}

</span><span>$t</span> = <span>new</span><span> test;
</span><span>$t</span>->show();
ログイン後にコピー

B ファイルコード:

<?<span>php

</span><span>echo</span><span>$bbb</span>;
ログイン後にコピー

この時点では、内容は正常に出力できます。

4 番目のケース: ファイル A は、定義された関数を通じてファイル B をインポートします。 A の変数はファイル B では使用できませんが、ファイル A の呼び出し関数 (表示) の変数は使用できます。

A ファイルコード:

<?<span>php
</span><span>$aaa</span> = '123'<span>;

</span><span>function</span> display(<span>$file</span><span>){
    </span><span>$bbb</span>= 'asdasdas'<span>;
    </span><span>include</span><span>$file</span><span>;
}

display(</span>"B.php");
ログイン後にコピー

B ファイルコード:

<?<span>php
</span><span>echo</span><span>$aaa</span><span>;
</span><span>echo</span><span>$bbb</span>;
ログイン後にコピー

実行後、$aaa プロンプトは未定義ですが、$bbb は正常に出力できます。

そこで、表示方法を使用してテンプレートを導入するのは現実的ではないと考え始めました。 3 つの状況に基づいて、最終的にテンプレート ファイルをインポートするクラスを作成することにしました。現在、ThinkPHP と Smarty もクラスを使用してテンプレート ファイルを導入しています。記事内の欠陥があれば修正していただければ幸いです。

以上、PHP におけるインクルードファイルの可変スコープに関する研究をその側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート