比较 PHP 对象时出现意外结果
当我比较两个不同的对象时,它首先返回,而不是在(对象上)返回之后。true
print_r
false
从 PHP 手册:
如果两个对象实例具有相同的属性和值,并且是同一类的实例,则它们相等。
但在这里,在例子中,我设置了不同的值。为什么 PHP 5.4.0 - 5.5.7 之间的结果不同?
abstract class first
{
protected $someArray = array();
}
class second extends first
{
protected $someArray = array();
protected $someValue = null;
public function __construct($someValue)
{
$this->someValue = $someValue;
}
}
$objFirst = new second('123');
$objSecond = new second('321');
var_dump ($objFirst == $objSecond);
print_r($objFirst);
var_dump ($objFirst == $objSecond);
结果是:
bool(true)
second Object ( [someArray:protected] =>
Array ( ) [someValue:protected] => 123 )
bool(false)
但我所期望的是:
bool(false)
second Object ( [someArray:protected] =>
Array ( ) [someValue:protected] => 123 )
bool(false)