参考函数: compare_function (in Zend/zend_operators.c)
test.php
===================
class phpor{
public function __tostring() {
return ‘aa’;
}
}
if (new phpor == "aa") echo ‘ok1’;
if ("aa" == new phpor) echo ‘ok2’;
exit;
===========================
你觉得ok1和ok2是不是都能输出; 原来我猜测php是不是将 ”==“ 右边的转换成左边的类型后进行比较的; 看了源码才知道根本不是这么简单的;
如果其中一个是对象,并且该对象是可以cast的,则将对象cast成另一操作数的类型后再进行比较。所以上面ok1和ok2都是输出的
———————-
关于 ‘===’ 的实现,参考: is_identical_function (in Zend/zend_operators.c)