程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 如何正確理解PHP include作用域

如何正確理解PHP include作用域

編輯:關於PHP編程

很多程序員在使用

注意:本文檔基於include敘述,但也適用於 require。這兩種結構除了在如何處理包含失敗之外,其他完全一樣:在包含失敗時,include()產生一個警告並繼續執行,而require()則導致一個致命錯誤。換句話說,如果想在遇到丟失文件時停止處理頁面就用require(),否則就用include()。

PHP include作用域1、c

  1. < ?php  
  2. $color = 'green';  
  3. $fruit = 'apple';  
  4. ?> 
  1. < ?php  
  2. function foo()  
  3. {  
  4. global $color;  
  5. include 'vars.php';  
  6. echo "A $color $fruit";  
  7. }  
  8. foo();   
  9. // A green apple  
  10. echo "A $color $fruit";   
  11. // A green  
  12. ?>  

由此例可看出:

(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、函數、類的作用域

  1. < ?php  
  2. class ClassB {  
  3. /**  
  4. * constructor  
  5. */  
  6. public function __construct(){}  
  7. /**  
  8. * destructor  
  9. */  
  10. public function __destruct() {}  
  11. public function printit() {  
  12. echo 'print it in ClassB.<br />';  
  13. }   
  14. }  
  15. function show_func_included() {  
  16. echo 'show_func_included<br/>';  
  17. }  
  18. ?> 
  1. < ?php  
  2. function include_class() {  
  3. include('classb.php');  
  4. }  
  5. include_class();  
  6. $objB = new ClassB();  
  7. $objB->printit();   
  8. // print it in ClassB.  
  9. show_func_included()   
  10. // show_func_included  
  11. ?>  

由此例可以看出

所有在被包含文件中定義的函數和類在被包含後,在包含文件裡都具有全局作用域

結論:

1、被包含文件的變量的PHP include作用域遵從(不改變)包含文件所在處的作用域。
2、所有在被包含文件中定義的函數和類在被包含後,在包含文件裡都具有全局作用域


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved