Creo que será mucho más fácil ver el problema en un ejemplo de código que escribir la pregunta en primer lugar. Aquí está mi código php:¿Insinúa el tipo de php no llevarse bien con las interfaces y las clases abstractas?
<?php
interface AnInterface
{
public function method();
}
class AClass implements AnInterface
{
public function method()
{
echo __METHOD__;
}
}
abstract class AnAbstractClass
{
abstract public function method(AnInterface $Object);
}
class ConcreteClass extends AnAbstractClass
{
public function method(AClass $Object)
{
$Object->method();
}
}
$Object1 = new ConcreteClass();
$Object2 = new AClass();
$Object1->method($Object2);
El código anterior hace que el siguiente error:
Fatal error: Declaration of ConcreteClass::method() must be compatible with that of AnAbstractClass::method()
El problema es que no parece php estar reconociendo las firmas de AnAbstractClass :: método y ConcreteClass: : método como compatible. ¿Estoy haciendo algo mal? ¡Gracias!
Por favor, * por favor * adquiera el hábito de publicar el mensaje de error que su código está generando. Publicar código sin publicar la salida (o error) es inútil. – meagar