Потому что это два разных класса. Каждая инструкция 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"