2012-07-26 12 views
6

È possibile sovrascrivere un metodo PHP in una classe figlia e modificare i parametri nella firma, come illustrato di seguito.Le classi figlio PHP possono modificare i parametri dei metodi sottoposti a override?

class theParent { 
    function myMethod($param1) { 
    // code here 
    } 
} 

class theChild extends theParent { 
    function myMethod($param1, $param2) { 
    // code here 
    } 
} 

Ho provato questo e funziona bene e non genera errori. La mia domanda è, questa è una brutta forma? O un principio base di OOP?

Se il metodo genitore è dichiarato astratto, le firme figlio non possono deviare. Presumibilmente questo è il meccanismo da usare se hai bisogno di rinforzare quell'aspetto dell'interfaccia?

+1

Quella classe bambino non è un bambino della prima classe. Per non parlare della sintassi non valida ... – nickb

+0

Si chiama ** override **. Se si desidera impedire a una classe figlia di eseguire l'override di un metodo, utilizzare la parola chiave [final] (http://php.net/manual/en/language.oop5.final.php). –

risposta

0

Finché

class theChild extends theParent { 
} 

E 'un buon esempio di programmazione orientata agli oggetti.

0

Quello che hai fatto è chiamato override e non va bene niente di male ma se vuoi rendere le classi figlio attenersi alla firma del genitore meglio usi le interfacce come sotto Dovresti solo dare delle firme e le classi child mut implementare loro come sono dichiarati.

interface theParent { 
     function myMethod($param1) ; 
    } 

    class theChild extends theParent { 
     function myMethod($param1) { 
     // code here 
     } 
    } 

Speranza che aiuta :)

Problemi correlati