假设现有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.phpinclude "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.phpinclude "B.php";ShowV(0);?>
结果为:
由此可见,include文件的全局变量作用域仅在当前文件(也即网页页面)。注释:这里的global变量是指编程语言的全局,并非是cgi server容器的global变量值。所以我们在使用特定页面使用指定变量的时候,默认状态下在其他页面被包含的情况下是无法调用该变量的值。在一方面来说,这是封装,泄露机制和安全保护。另一方面来说这也是一种限制,对“自由发挥”的限制。虽然Internet互联网潜在对web server服务器和用户的隐私和财产安全诸多威胁,但这并不妨碍开发者developer对web的扩展和用户对其的意识延伸。这两者并不冲突矛盾。
那么,作为开发者的我们,该如何突破无视这种限制和阻碍?
其实,如果我们学习过规范的、基础的编程知识就没有问题了。中国有句古话:授人与鱼不如授人与渔。跳跃式发展不利于未来的提升。忽视基础(设施)的完善无异于饮鸠止渴。钻牛角尖很可能是掘头路一条。(当然钻穿了就是开拓者)