我已经用PHP编写了多年的个人脚本编码,并习惯于关闭错误显示.我即将发布其中一些脚本,并希望以正确的方式完成.
我关闭错误显示的唯一原因是为了避免在使用它之前测试每个var,这要归功于isset().
所以,这是我的问题:
是否有更好的方式来声明多个变量而不是这个?
<?php
// at the begining of my main file
if (!isset($foo)) ($foo = '');
if (!isset($bar)) ($bar = '');
if (!isset($ping)) ($ping = '');
if (!isset($pong)) ($pong = '');
// etc. for every single var
?>
Run Code Online (Sandbox Code Playgroud)
比如这样的东西:
<?php
var $foo, $bar, $ping, $pong;
?>
Run Code Online (Sandbox Code Playgroud) 例:
set_error_handler(array($this, 'handleError'), E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE);
Run Code Online (Sandbox Code Playgroud)
这意味着什么?
Python的约定是变量是通过第一次赋值创建的,并且在分配一个变量之前尝试读取它们的值会引发异常.相比之下,PHP在读取时会隐式创建一个变量,并带有空值.这意味着在PHP中很容易做到这一点:
function mymodule_important_calculation() {
$result = /* ... long and complex calculation ... */;
return $resukt;
}
Run Code Online (Sandbox Code Playgroud)
此函数始终返回null,如果null是functuion的有效值,则bug可能会在一段时间内未被检测到.Python等价物会抱怨变量resukt在分配之前被使用.
那么......有没有办法将PHP配置为更严格的变量赋值?
当我设置时error_reporting(E_ALL | E_STRICT);,我的代码会产生Undefined variable错误.我可以解决它们,但我想知道在编写通过严格检查的代码和E_STRICT关闭之间是否存在速度或内存使用方面的任何差异?