0

私は次のクラスを持っています:

<?php
    Abstract Class A{
        public function foo(){
            self::bar();
        }

       Abstract public static function bar($arg);
    }

    Class B extends A{ 
        public static function bar(){
            echo "Class B";      
        }
    }

    Class C extends A{
        public static function bar(){
            echo "Class C";
        }
    }
?>

インスタンス化されたクラスのメソッド bar() を foo() から呼び出す必要があります。

<?php
  $obj1 = new B();
  $obj2 = new C();

  $obj1->foo(); // I expect to get 'Class B'
  $obj2->foo(); // I expect to get 'Class C'
?>

前もって感謝します。

4

1 に答える 1

0

これには遅延静的バインディングを使用します

基本的に、あなたが呼び出す抽象クラスでstatic::method()。これは、呼び出しを行ったクラスのメソッドを使用します。

Abstract Class A{
    public function foo(){
        // Late static binding
        static::bar();
    }

   abstract public static function bar();
}
于 2013-02-18T04:15:44.697 に答える