编程语言
首页 > 编程语言> > 在PHP中添加对象和整数的语义?

在PHP中添加对象和整数的语义?

作者:互联网

class wat
{
   public $a = 3.14;
   public $x = 9;
   public $y = 2;
}


$a = new wat();

var_dump(1000 + $a);
var_dump($a + 1000);

输出为:

int(1001)
int(1001)

好吧,将wat *对象添加到一个整数显然不是正确的选择,因为PHP抱怨它“无法将wat类的对象转换为int”,但是它仍然是做什么的呢?

(我也有问这个问题的实际原因,我想重构一个函数以摆脱“ PHP Notice”,同时仍然保持行为完全不变.)

*:http://img.youtube.com/vi/kXEgk1Hdze0/1.jpg

解决方法:

如果两个操作数中的任何一个为浮点,则加法()隐式将两个操作数都转换为浮点数,否则将两个操作数都转换为整数(See paragraph #2).

看起来,至少到目前为止,强制转换为int的对象的结果为1,因此结果为1000 1 = 1001或1 1000 = 1001,但是per the documentation的行为是不确定的,不应依赖.

如果您已打开E_NOTICE错误报告,则还应生成一条通知,指出该对象无法转换为int.

标签:duck-typing,type-conversion,php,object
来源: https://codeday.me/bug/20191030/1971785.html