Heim  >  Artikel  >  Backend-Entwicklung  >  php中include文件变量作用域的研究

php中include文件变量作用域的研究

WBOY
WBOYOriginal
2016-08-08 09:22:50818Durchsuche

 

在php中我们有时候需要include一个文件。比如我前段时间在写一个框架的时候,打算用原生的php作为模板,然后写一个display方法引入模板文件就可以,但是这只是我的意淫而已。

写完后发现在模板中所有的变量都提示未定义。通过各种研究和查找资料,总结了include文件时的几种情况下的作用域。

第一种情况:A文件include B文件,在B文件中可以调用A中的变量。

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>;

可以正常输出内容。

第二种情况:A文件include B文件,然后在A文件中可以调用B文件的变量。

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';

这个时候是可以正常输出内容的。

第三种情况: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>;

这个时候是可以正常输出内容的。

第四种情况:A文件通过定义的一个函数引入B文件,在B文件中无法使用A中的变量,但是可以使用A文件中调用函数(display)中的变量。

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可以正常输出。

所以我开始准本用一个display方法来引入模板是不可行的。根据方面的三种情况,最后我选择了写一个类来导入模板文件。目前ThinkPHP和Smarty也都是用类来引入模板文件的。文中不足之处欢迎指正。

以上就介绍了php中include文件变量作用域的研究,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP 数组遍历方法总结Nächster Artikel:PHP教程之00----入门指引