Mi chiedo se non v'è alcuna buona ragione per cui questo comportamento è possibile in PHP corrente 5.4 implementazione:PHP 5.4: perché le classi possono sovrascrivere i metodi dei tratti con una firma diversa?
trait T {
public function test(PDO $pdo) {}
}
class C {
use T;
public function test(DOMDocument $dom) {}
}
ho pensato che il fatto che una classe utilizza un tratto, garantito che questa classe ha avuto una specifica interfaccia disponibile. Ma qui, se inavvertitamente sovrascriviamo il metodo tratto per un altro scopo, non riceviamo nemmeno un avviso di norme rigorose, come nel caso dell'ereditarietà classica.
È specificamente consentito? Per che cosa?
Grazie per la risposta, lo fa in effetti dicono che la classe può sovrascrivere i metodi del tratto, ma non dice il motivo per cui può sovrascrivere con una firma diversa! – Benjamin
Ho aggiornato il mio post. – Eugene
Come noto, i tratti in PHP sovrascrivono il metodo allo stesso modo ereditato, il che significa nessun controllo della firma, solo il nome del metodo. – Timur