Наследование классов PHP и методы расширения - PullRequest
0 голосов
/ 28 января 2012

Я хочу выполнить следующее, но я не уверен, как это сделать:

class foo {
    function doSomething(){
        // do something
    }
}

class bar extends foo {
    function doSomething(){
        // do something AND DO SOMETHING ELSE, but just for class bar objects
    }
}

Возможно ли это сделать, пока используется метод doSomething(), или мне нужно создать новый метод?

Edit: чтобы уточнить, я не хочу повторять «сделать что-то» в унаследованном методе, я просто хочу указать это один раз в методе foo-> doSomething (), а затем использовать его в дочерних классах.

Ответы [ 3 ]

2 голосов
/ 28 января 2012

Вы сделали это прямо там.Если вы хотите вызвать doSomething() в foo, просто сделайте это в bar:

function doSomething() {
    // do bar-specific things here
    parent::doSomething();
    // or here
}

. И повторение упомянутого вами метода обычно называется перегрузкой.

1 голос
/ 28 января 2012

Вы можете сделать это, используя ключевое слово parent:

class bar extends foo {
    function doSomething(){
        parent::doSomething();
    }
}
0 голосов
/ 28 января 2012

При расширении класса вы можете просто использовать $this->method() для использования родительского метода, поскольку вы его не перезаписали.Когда вы перезаписали его, фрагмент укажет на новый метод.Вы можете получить доступ к родительскому методу через parent::method() затем.

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