Сравнение имен классов в целом является плохой идеей, потому что это нарушает полиморфизм, основанный на подтипах, и потому, что обычно не очень хорошо, чтобы ОО был так любопытен к интимным деталям объекта, как его точное имя пакета.
Вместо этого напишите $result->isa('FooInvalidResults')
- или, если вы не уверены, что $result
вообще не является объектом, blessed $result && $result->isa('FooInvalidResults')
.
Использование UNIVERSAL::isa
- плохая идея, потому что некоторые объекты (например, фиктивные объекты для тестирования) имеют законные причины для переопределения метода isa
, и вызов UNIVERSAL::isa
нарушает это.