Иногда в моем коде, я буду проверять, если конкретный объект реализует интерфейс:PHPUnit, издевались интерфейсы и InstanceOf
if ($instance instanceof Interface) {};
Однако создание издевается упомянутого интерфейса в PHPUnit, я не могу похоже, проходят этот тест.
// class name is Mock_Interface_431469d7, does not pass above check
$instance = $this->getMock('Interface');
Я понимаю, что с именем интерфейса, то класс отличается от класса, реализующего интерфейс, но я не уверен, как получить дело с этим.
Я вынужден издеваться над конкретным классом, который реализует интерфейс? Разве это не победит цель использования интерфейса для переносимости?
Благодаря
Да, холодные головы преобладают. После ночи полного сна, я понял, что не использую полное пространство имен, когда насмехается над объектом. –
Немного другой вариант использования, но могу ли я проверить, является ли экземпляр экземпляром класса или макета класса. – kapad
@kapad Вы видите, что это основной пункт полиморфизма, который вам не нужно знать, является ли текущий объект и экземпляром класса или макета. Если вам все еще нужно знать, то вы делаете что-то неправильно. P.S. Просто FYI вы можете использовать функцию [get_class] (http://ca1.php.net/manual/en/function.get-class.php), чтобы узнать точное имя класса объекта – dVaffection