lenf 发表于 2018-12-13 07:00:02

PHP 父类静态方法中调用子类静态方法

  get_called_class() 获取调用该方法的类,如果是在子类中调用父类方法,则返回子类的类名。
  或者用static关键字: static::class
  如果有多个子类,要在父类中调用子类方法,下面代码可实现:
class parent{
    abstract protected static function getFunc($action);
   public static function call($action){
   //调用子类静态方法,唯一的方式
      $func = static::getFunc($action);
            if(!$func){
            exit();
      }
      try {
            $reflectionMethod = new ReflectionMethod(get_called_class(), $func);
      }catch (ReflectionException $e) {
            exit();
      }
      return $reflectionMethod->invoke(null/*,$paras*/);
    }
}
class son extends parent{
    public static function getFunc($action){
         return "hello";
    }
}  




页: [1]
查看完整版本: PHP 父类静态方法中调用子类静态方法