Как сохранить вызовы метода в базовом классе придерживаться базового класса в PHP? - PullRequest
0 голосов
/ 09 апреля 2011
class son extends parent {
    ...
    public function func_name()
    {
        //do some additional stuff here
        ...
        parent:func_name();
    }

}

Но в parent есть другой метод:

class parent {
...
    public another_func()
    {
        $this->func_name();//how to stick to the one in parent here???
    }
}

Пример:

$inst = new son;
$inst->another_func()////how to make the func_name within another_func stick to the one in parent???

Ответы [ 3 ]

0 голосов
/ 09 апреля 2011
public another_func () {
    if (get_class($this) == 'parent') {
        $this->func_name(); // $this is an instance of parent object
    } else {
        parent::func_name(); // $this is an instance of some child class
    }
}
0 голосов
/ 09 апреля 2011

Или не ParentClassName::func_name сработает?

0 голосов
/ 09 апреля 2011

Переименуйте parent::func_name и сделайте его приватным. Вызовите эту функцию из parent::another_func (и, возможно, из новой реализации parent::func_name).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...