从PHP中的父类中的方法调用派生的静态方法

时间:2013-02-18 04:04:00

标签: php class static call

我有以下课程:

<?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";
        }
    }
?>

我需要从foo()调用实例化类的方法bar():

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

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

您使用late static binding作为此

基本上在抽象类中,您调用static::method()。这使用了进行调用的类的方法。

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

   abstract public static function bar();
}