假設現有A B C三個PHP文件,B和C調用A,其中A.php的代碼爲:
<?php
/* 定義file:A.php, 假設當前目錄爲根目錄 */
// 定義全局變量: globalVariableA
$globalVariableA="This is a global variable";
// 1)顯示globalVariableA的值
echo "A) The value of global variable A in A.php is $globalVariableA;<br/>";
?>
B.php的代碼爲:
<?php
/* 定義file: B.php,假設當前目錄爲根目錄 */
// 包含A.php
include "A.php";
// 定義函數ShowV()
function ShowV($p){
// 2)顯示globalVariableA的值
echo ($p ? "B)" : "C)") . " The value of global variable A in A.php is " . ($globalVariableA == NULL ? "NULL" : $globalVariableA) . "<br/>";
}
ShowV(1);
?>
C.php爲調用過程代碼爲:
<?php
/* file: C.php */
// 包含B.php
include "B.php";
ShowV(0);
?>
結果爲:
由此可見,include文件的全局變量作用域僅在當前文件(也即網頁頁面)。註釋:這裏的global變量是指編程語言的全局,並非是cgi server容器的global變量值。所以我們在使用特定頁面使用指定變量的時候,默認狀態下在其他頁面被包含的情況下是無法調用該變量的值。在一方面來說,這是封裝,泄露機制和安全保護。另一方面來說這也是一種限制,對“自由發揮”的限制。雖然Internet互聯網潛在對web server服務器和用戶的隱私和財產安全諸多威脅,但這並不妨礙開發者developer對web的擴展和用戶對其的意識延申。這兩者並不衝突矛盾。
那麼,作爲開發者的我們,該如何突破無視這種限制和阻礙?
其實,如果我們學習過規範的、基礎的編程知識就沒有問題了。中國有句古話:授人與魚不如授人與漁。跳躍式發展不利於未來的提升。忽視基礎(設施)的完善無異於飲鳩止渴。鑽牛角尖很可能是掘頭路一條。(當然鑽穿了就是開拓者)