静的メソッドの遅延バインド

890 ワード

例:
親クラスに静的メソッドa,b,子クラスに静的メソッドaを含む
親クラスのbメソッドは、自身のaメソッドを呼び出し、この場合、子クラスが親クラスのbメソッドを呼び出すと、
self::a()は親自身を呼び出すaメソッドなのか,それとも子自身を呼び出すaメソッドなのか
答え:selfは親クラスのaメソッドを呼び出します
親クラスには静的メソッドcが追加され、static::a()を使用します.このとき呼び出されるのは親クラスですか、それとも子クラスのaメソッドですか.
答え:staticが呼び出すのはサブクラスのaメソッドです
<?php
    class Test
    {
        public static function a()
        {
            echo '   a  <br/>';
        }

        public static function b()
        {
            self::a();
            echo '   b  <br/>';
        }

        public static function c()
        {
            static::a();//     c  , static::a(),      a()  
        }
    }

    class child_test extends Test
    {
        public static function a()
        {
            echo '   a  <br/>';
        }
    }

    child_test::b();
    child_test::c();
?>