Penso che sarà molto più facile vedere il problema in un esempio di codice che scrivere la domanda in primo luogo. Ecco il mio codice php:Suggerimento di php che non va d'accordo con le interfacce e le classi astratte?
<?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);
Il codice sopra provoca il seguente errore:
Fatal error: Declaration of ConcreteClass::method() must be compatible with that of AnAbstractClass::method()
Il problema è che il PHP non sembra essere riconoscere le firme dei AnAbstractClass :: metodo e ConcreteClass: : metodo come compatibile. Sto facendo qualcosa di sbagliato? Grazie!
Per favore, * per favore * abituarsi a pubblicare il messaggio di errore che il codice sta generando. Inviare codice senza pubblicare l'output (o errore) è inutile. – meagar