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

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 に答える