2012-02-09 12 views
5

Powiel możliwe:
Enforcing call to parent methodCicho wywołanie metody rodzic za plecami

Mam klasy jak ten

abstract class theme{ 

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

    abstract function footer(){ 
    // do stuff here 

    } 

} 

więc wszystkie klasy podrzędne muszą mieć te 2 sposoby :

class Atheme extends theme{ 

    function header(){ 
    // do stuff here 

    echo .. 
    } 

    function footer(){ 
    // do stuff here 

    echo .. 
    } 

} 

Teraz gdy zgłoszę jednej z poniższych metod:

$atheme = new Atheme;

$atheme->header();

Chcę metody header() z klasy podrzędne, aby automatycznie wywołać metodę klasy nadrzędnej header(), bez specjalnie wywołanie parent :: header() w klasie potomnej.

Czy to możliwe?

Odpowiedz

4

Jeśli masz tylko jeden poziom dziedziczenia, można to osiągnąć przez robi coś takiego:

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 
    } 
} 

Jeżeli łańcuch dziedziczenia jest dowolnie długo, a następnie będziesz musiał użyć callback chain.

Powiązane problemy