很多程序員在使用
注意:本文檔基於include敘述,但也適用於 require。這兩種結構除了在如何處理包含失敗之外,其他完全一樣:在包含失敗時,include()產生一個警告並繼續執行,而require()則導致一個致命錯誤。換句話說,如果想在遇到丟失文件時停止處理頁面就用require(),否則就用include()。
PHP include作用域1、c
- < ?php
- $color = 'green';
- $fruit = 'apple';
- ?>
- < ?php
- function foo()
- {
- global $color;
- include 'vars.php';
- echo "A $color $fruit";
- }
- foo();
- // A green apple
- echo "A $color $fruit";
- // A green
- ?>
由此例可看出:
(1) 被包含文件的變量的PHP include作用域遵從包含文件所在處的作用域。即在函數裡使用include將其他文件的變量包含進來,這些變量的作用域為該函數內。
(2) foo()函數外能打印出$color的值,並沒有違反(1)的規定。那是因為函數開始已經聲明$color為global (盡管foo()函數外並沒有$color變量,此時的$color變量並不是vars.php裡面的$color變量,而是一個強制聲明為“全局”的新變量,這時它還沒有被賦值,當下面包含進vars.php後,根據(1)的原則,vars.php中的$color變量自動享有函數內的作用域,所以它的值就是全局變量$color的值)
PHP include作用域2、函數、類的作用域
- < ?php
- class ClassB {
- /**
- * constructor
- */
- public function __construct(){}
- /**
- * destructor
- */
- public function __destruct() {}
- public function printit() {
- echo 'print it in ClassB.<br />';
- }
- }
- function show_func_included() {
- echo 'show_func_included<br/>';
- }
- ?>
- < ?php
- function include_class() {
- include('classb.php');
- }
- include_class();
- $objB = new ClassB();
- $objB->printit();
- // print it in ClassB.
- show_func_included()
- // show_func_included
- ?>
由此例可以看出:
所有在被包含文件中定義的函數和類在被包含後,在包含文件裡都具有全局作用域
結論:
1、被包含文件的變量的PHP include作用域遵從(不改變)包含文件所在處的作用域。
2、所有在被包含文件中定義的函數和類在被包含後,在包含文件裡都具有全局作用域