所以我有一个PHPUnit测试,并在一个函数内发现了这个代码。
global $argv, $argc;
echo $argc;
print_r($argv);
我了解这些变量代表(在命令行中传递的参数),但我从来没有见过这样的语法:global $argv, $argc;
具体是怎么回事呢?
所以我有一个PHPUnit测试,并在一个函数内发现了这个代码。
global $argv, $argc;
echo $argc;
print_r($argv);
我了解这些变量代表(在命令行中传递的参数),但我从来没有见过这样的语法:global $argv, $argc;
具体是怎么回事呢?
global
关键字告诉PHP使用变量的全局范围版本,并使其对当前范围也可见,以便在函数/类之外声明的变量也可以在其中被访问。
否则,试图读取/分配这些变量将运行在它们的不同本地版本上。
比较:
$foo = 1;
function test() {
$foo = 2;
}
echo $foo; // prints 1
与...
$foo = 1;
function test() {
global $foo;
$foo = 2;
}
echo $foo; // prints 2
global
关键字使指定变量..以及全局变量,可以从该文件的任何位置访问。
不完全是。函数'foo'中的'global $ a'不会自动使'$ a'指向另一个函数'bar'中的同一个全局变量。相反,'global'关键字更多地使得给定名称在全局'关键字被使用的范围内引用全局版本。 – Amber 2010-05-07 17:57:02
在像Java这样的语言,它们允许你在逗号分隔的一行上声明多个相同类型的变量。
int sum, counter, days, number;
没有一个IDE测试代码,我会说,它同关于PHP,它只是声明了这两个变量global
。你可以分别写在两条分开的线上,
global $argv;
global $argc;
谢谢,这很有帮助,但我感到困惑的是这些变量已经定义好了。我没有定义它们。此外,逗号分隔$ argv,$ argc。我以前没有见过。 – Andrew 2010-05-07 17:58:48
它只是制造变种变种。通过使它成为全局变量,你可以像Dav那样在函数中使用变量 – ggfan 2010-05-07 18:33:52
基本上Andrew,PHP自动在上面的例子中完成了'$ foo = 1;'; 'global'关键字就像上面的函数一样用来访问PHP在一个不是全局的范围内定义的全局变量。 – Amber 2010-05-07 19:27:23