php中的 "==" 是怎么实现的

参考函数: 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)

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据