9

可能重复:
如何让 PHP 类构造函数调用其父级的父级构造函数

我知道这听起来很奇怪,但我试图绕过一个错误。如何调用祖父母方法?

<?php
class Person {
    function speak(){ echo 'person'; }
}
class Child extends Person {
    function speak(){ echo 'child'; }
}
class GrandChild extends Child {
    function speak(){
      //skip parent, in order to call grandparent speak method
    }
}
4

2 回答 2

17

你可以明确地调用它;

class GrandChild extends Child {
    function speak() {
       Person::speak();
    }
}

parent只是一种使用最接近的基类的方法,而无需在多个地方使用基类名称,但是给出任何基类的类名称同样可以使用它而不是直接父类。

于 2012-09-25T19:01:44.157 回答
4

PHP 有本地方式来做到这一点。

试试这个:

class Person {

    function speak(){ 

        echo 'person'; 
    }
}

class Child extends Person {

    function speak(){

        echo 'child';
    }
}

class GrandChild extends Child {

    function speak() {

         // Now here php allow you to call a parents method using this way.
         // This is not a bug. I know it would make you think on a static methid, but 
         // notice that the function speak in the class Person is not a static function.

         Person::speak();

    }
}

$grandchild_object = new GrandChild();

$grandchild_object->speak();
于 2012-09-25T19:17:00.323 回答