在phpunit中
$this->assertEquals((object)[], (object)[]);
//and
$this->assertEquals(new stdClass(), new stdClass());
可以,但是
$this->assertEquals(new class{}, new class{});
失败。 为什么?
答案 0 :(得分:3)
因为它们是两个不同的类。每条new class{}
指令都会生成一个单独的类定义。
$one = new class{};
$two = new class{};
var_dump(get_class($one), get_class($two));
输出:
string(39) "class@anonymous/in/FULlj0x7fc9081ac018"
string(39) "class@anonymous/in/FULlj0x7fc9081ac02c"
只有在您的代码中由同一指令创建的匿名类的实例才会共享该类:
function createClass() {
return new class{};
}
$one = createClass();
$two = createClass();
var_dump(get_class($one), get_class($two));
输出:
string(39) "class@anonymous/in/sbApQ0x7f3138fe3089"
string(39) "class@anonymous/in/sbApQ0x7f3138fe3089"