我有以下课程:
<?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'
?>
提前致谢。
答案 0 :(得分:0)
您使用late static binding作为此
基本上在抽象类中,您调用static::method()
。这使用了进行调用的类的方法。
Abstract Class A{
public function foo(){
// Late static binding
static::bar();
}
abstract public static function bar();
}