2012-02-09 8 views
5

Duplicar posibles:
Enforcing call to parent methodmétodo de matriz llamada en silencio detrás de la espalda

tengo una clase como esta

abstract class theme{ 

    abstract function header(){ 
    // do stuff here 
    } 

    abstract function footer(){ 
    // do stuff here 

    } 

} 

por lo que todas las clases hijas debe tener estos 2 métodos :

class Atheme extends theme{ 

    function header(){ 
    // do stuff here 

    echo .. 
    } 

    function footer(){ 
    // do stuff here 

    echo .. 
    } 

} 

Ahora cuando llamo a uno de estos métodos:

$atheme = new Atheme;

$atheme->header();

Quiero que el método de cabecera() de la clase infantil para llamar automáticamente al método de cabecera de la clase dominante(), sin específicamente llamando a parent :: header() en la clase secundaria.

¿Esto es posible?

Respuesta

4

Si sólo tiene un nivel de herencia, se puede lograr esto haciendo algo como:

abstract class theme { 
    final public function header() { 
     // do parent class stuff 
     $this->_header(); 
    } 

    abstract protected function _header(); 

    // ditto for footer 
} 

class Atheme extends theme { 
    protected function _header() { 
     // do child class stuff 
    } 
} 

Si la cadena de herencia es arbitrariamente larga, entonces usted tendrá que utilizar un callback chain.

Cuestiones relacionadas