veces en mi código, voy a comprobar para ver si un determinado objeto implementa una interfaz:PHPUnit, las interfaces burlado, y instanceof
if ($instance instanceof Interface) {};
Sin embargo, la creación de burla de dicha interfaz en PHPUnit, no puedo parece pasar esa prueba.
// class name is Mock_Interface_431469d7, does not pass above check
$instance = $this->getMock('Interface');
entiendo que tiene una clase denominada interfaz es diferente de una clase que implementa la interfaz, pero no estoy seguro de cómo lidiar con esto.
¿Estoy obligado a burlarme de una clase concreta que implementa Interface? ¿No vencería eso el propósito de usar una interfaz para la portabilidad?
Gracias
Sí, las cabezas frías prevalecen. Después de una noche de sueño completo, me di cuenta de que no estaba usando el espacio de nombres completamente calificado cuando me burlaba del objeto. –
Caso de uso ligeramente diferente, pero ¿puedo verificar si una instancia es una instancia de una clase o un simulacro de la clase? – kapad
@kapad Verá, este es el punto principal del Polimorfismo que no tiene que saber si el objeto actual es una instancia de clase o un simulacro. Si aún necesitas saber, entonces haces algo mal. P.S. Solo para su información, puede usar la función [get_class] (http://ca1.php.net/manual/en/function.get-class.php) para conocer el nombre de clase exacto del objeto – dVaffection