有人可以向我解释为什么PHP在访问空对象的属性时没有报告警告或错误(未分配var)?
例如:
$oMyObject->test = 'hello world'; // $oMyObject is not assigned but no warning or error
当我这样做时,会产生错误:
$oMyObject->test(); // Error: Calling function on non-object
版本信息:
Windows XP
XAMPP Windows Version 1.7.0
Apache/2.2.11 (Win32)
PHP 5.2.8
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
with Xdebug v2.0.4, Copyright (c) 2002-2008, by Derick Rethans
为什么呢?试图设置error_reporting(E_ALL)但仍然没有错误或警告。
答案 0 :(得分:0)
$ oMyObject-> text ='hello world';是一个完全有效的声明,前提是文本是公开的而不是私有的或受保护的。至于$ oMyObject-> text(),您需要提供更多信息。你得到什么样的错误?函数text()是公共的还是私有的还是受保护的?你能发布这个功能吗?
答案 1 :(得分:0)
PHP中的这种行为非常容易出错! 谁真的认为这是个好主意?
$rs = $db->Execute("SELECT 1");
while(!$r->EOF) {
// runs forever
$rs->MoveNext();
}
未立即检测到拼写错误($r
而非$rs
),因为它没有错误。
开心辞典!
在我看来,这是非/ null-object成员访问是完整的FUBAR。 在这种情况下,每种理智的语言(PHP都不是)会给你一个很大的错误(例如异常,nullpointerexception,总线错误,分段错误等)。