众所周知,全局关键字可以使得变量(或对象、数组)在当前函数中可见。
<?php
$some_var = 'some string';
function __test(){
global $some_var;
echo $some_var; // some string
}
但是一些开发人员仍然在函数之外使用全局关键字,乍一看对我来说毫无意义。
那么问题是:在函数之外使用“global”关键字有意义吗?
众所周知,全局关键字可以使得变量(或对象、数组)在当前函数中可见。
<?php
$some_var = 'some string';
function __test(){
global $some_var;
echo $some_var; // some string
}
但是一些开发人员仍然在函数之外使用全局关键字,乍一看对我来说毫无意义。
那么问题是:在函数之外使用“global”关键字有意义吗?
根据文档:
在函数外使用 global 关键字不会报错。如果文件从函数内部包含,则可以使用它。
实际上,你可以将函数的主体放在不同的文件中,然后将其包含到函数中。如果只查看函数的主体,会给人留下使用全局变量在函数外部的印象,但事实是,当解释这段代码时,它将在函数内部被解释。
$name = "Jonathan";
function doSomething () {
include( 'functionGuts.php' );
}
我们的functionGuts.php
文件的内容可能是:
global $name;
echo "Hello, " . $name;
单独查看 functionGuts.php
时,会给人一种使用 global
在函数外部的印象,但实际上它是这样使用的:
$name = "Jonathan";
function doSomething () {
global $name;
echo "Hello, " . $name;
}
在函数外使用全局关键字不会起到任何作用,但该文件可能被包含在函数内部。
我使用它的另一个原因是使我的代码更易读和更有结构性。对于任何我想要在函数中访问的变量,我都会在主文件中使用global进行声明,这样只需快速浏览一下,我就知道它被引用为全局变量。(这意味着不要随意重命名,因为其他地方可能会使用... :))