尝试加快 PHP 的速度。
我正在查看基本的留言簿表单并尝试以我的风格重新创建它。
原始文件包含以下行:
$tmpDir = getenv('TEMP');
我知道 PHP 中的变量不必首先被声明(虽然这可能适合我),并且使用tmpDir
之类的名称,它肯定听起来像一些本地,临时变量。
所以,我正在尝试使用试用版Komodo的一些代码,因为我希望它的自动完成功能可以帮助我更快地学习语言。
输入$t
后,“自动完成”会向我显示可用内容。
那么,$tmpDir
不只是这段代码的一些局部变量吗?
像我这样的假人怎么会知道这个?
Komodo有一个转到定义功能,但是当我在原始示例中执行此操作时,它所做的就是在代码中突出显示它的四个实例。
因此,无需去那里记住 PHP 所拥有的每个全局变量,有没有办法知道什么是全局变量,什么不是?
我无法在php.net/manual找到$tmpDir
。
更新
superglobal 是我错过的关键字或PHP定义。我将熟悉的C#术语全局与PHP术语混淆。
鉴于此,答案是:
如果PHP代码使用超全局变量
tmpDir
,则PHP代码必须显式调用$ GLOBALS [tmpDir]才能使用它。
感谢deceze和Wayne Whitty,尽管他们都没有将此作为回答。当其中一个人做的时候,我会标记它。
答案 0 :(得分:2)
$tmpDir = getenv('TEMP');
在这种情况下,$ tmpDir将始终是局部变量,除非您专门将其设置为全局变量。但是,它可能存在于global scope中。您的IDE可能不太关心范围。它可能会显示您最近键入的变量名称列表。虽然,在这种情况下,我愿意打赌$tmpDir
是一个存在于全局范围内的局部变量,这意味着它可供您使用(尝试将其打印出来,只是为了看看是什么发生)。
<?php
/* global scope */
$tmpDir = getenv('TEMP');
function test(){
/* reference to local scope variable that doesn't exist */
echo $tmpDir;
}
test();
?>
如果你运行上面的代码,你会发现它不起作用,因为尽管已在全局范围内声明$tmpDir
,但它在函数{{1}的本地范围内不可用}}。这是因为test
不是全局变量。