【发布时间】:2012-02-26 12:46:14
【问题描述】:
例子:
error_reporting(E_ALL | E_STRICT);
class Test {}
$obj = new Test();
$obj->undeclared = "oops"; // I want an error here !! :(
echo $obj->algo; // oops
我在 PHP 5.2.11 和 5.3.0 上对其进行了测试。
我不希望我的对象中有动态属性。
在这种情况下是否可以强制 PHP 引发错误?
【问题讨论】:
-
$obj->undeclared是如何给您带来问题的? -
类测试{ public $myVar; } $obj->my_var = TRUE; /* 错字 / if($obj->myVar) { / 哦哦! */ }
-
你需要一个好的 IDE 来防止这样的错字。
-
你能告诉我一个能够做到这一点的 IDE 吗?我正在使用 Zend Studio(当然,你有代码完成功能,但对每个属性都使用 Ctrl+Space 只是因为如果你打错了 PHP 不会告诉你是矫枉过正)
-
情况其实更糟。如果您将此示例更改为读取未定义的属性而不是尝试写入它,您实际上会收到“通知”级别的错误消息:“通知:未定义属性:Test::$B ...”。所以 PHP 实际上将未定义的读取引用视为错误,将未定义的写入引用视为成功。所以,如果我错了,请纠正我,但 PHP 实际上是不一致的,因此有一个错误。
标签: php dynamic properties