Home > Article > Backend Development > Research on the variable scope of include files in PHP, _PHP tutorial
In php we sometimes need to include a file. For example, when I was writing a framework some time ago, I planned to use native PHP as the template, and then write a display method to introduce the template file, but this was just my imagination.
After writing it, I found that all variables in the template were undefined. Through various research and searching for information, I summarized the scope in several situations when including files.
A file code :
<?<span>php </span><span>$aaa</span> = '123'<span>; </span><span>include</span> "B.php";
B file code:
<?<span>php </span><span>echo</span> <span>$aaa</span>;
The content can be output normally.
A file code :
<?<span>php </span><span>include</span> "B.php"<span>; </span><span>echo</span> <span>$fff</span>;
B file code :
<?<span>php </span><span>$fff</span> = 'i am f';
At this time, the content can be output normally.
A file code :
<?<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();
Code of file B:
<?<span>php </span><span>echo</span> <span>$bbb</span>;
At this time, the content can be output normally.
A file code:
<?<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 file code:
<?<span>php </span><span>echo</span> <span>$aaa</span><span>; </span><span>echo</span> <span>$bbb</span>;
After running, $aaa prompts that it is undefined, and $bbb can be output normally.
Original link: http://www.cnblogs.com/dragondean/
So I started to assume that using a display method to introduce templates was not feasible. Based on the three situations, I finally chose to write a class to import the template file. Currently, ThinkPHP and Smarty also use classes to introduce template files. Any deficiencies in the article are welcome to be corrected.