2012-07-26 6 views
6

Puedo anular un método de PHP en una clase secundaria y cambiar los parámetros en la firma, como se muestra a continuación.¿Pueden las clases secundarias PHP alterar los parámetros de los métodos reemplazados?

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

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

He probado esto y funciona bien y no genera ningún error. Mi pregunta es, ¿es esta mala forma? ¿O un principio básico de OOP?

Si el método principal se declara abstracto, las firmas secundarias no se pueden desviar. Presumiblemente, ¿este es el mecanismo que debe usar si necesita aplicar ese aspecto de la interfaz?

+1

Esa clase de niño no es un hijo de la primera clase. Sin mencionar que es una sintaxis inválida ... – nickb

+0

Se llama ** anulación **. Si desea evitar que una clase secundaria sobrescriba un método, utilice la palabra clave [final] (http://php.net/manual/en/language.oop5.final.php). –

Respuesta

0

Mientras

class theChild extends theParent { 
} 

Es un buen ejemplo de programación orientada a objetos.

0

Lo que has hecho se llama anulación y no está mal pero si quieres hacer que las clases secundarias se adhieran mejor a la firma del padre, debes usar las interfaces de la siguiente manera. Solo debes dar las firmas y las clases secundarias implementar ellos como están declarados.

interface theParent { 
     function myMethod($param1) ; 
    } 

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

espero que ayude :)

Cuestiones relacionadas