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 finishing writing, 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.
The first situation: File A includes file B, and variables in A can be called in file B.
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>;
can output the content normally.
Second case: File A includes file B, and then the variables of file B can be called in file A.
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.
The third situation: File B is called in a method of a certain class in file A, and then the variables in the method can be called in file B.
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();
B file code:
<?<span>php </span><span>echo</span><span>$bbb</span>;
At this time, the content can be output normally.
Fourth case: File A imports file B through a defined function. Variables in A cannot be used in file B, but variables in the calling function (display) in file A can be used.
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 prompt is undefined, $bbb can be output normally.
So I started to think that using a display method to introduce templates is 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.
The above has introduced the research on the variable scope of include files in PHP, including aspects of it. I hope it will be helpful to friends who are interested in PHP tutorials.