get_drawn_class()$此对象

时间:2018-06-23 21:56:05

标签: php polymorphism

如何获取调用当前函数的该类的对象$this

class a extends zebra {
  function xyz() {
     ...
     b::somestaticmethod();
  }
}

class b {
  public static function somestaticmethod() {
    $callerObj = get_called_class();
  }
}

函数get_called_class()以字符串格式获取调用类的名称。我正在寻找的是,是否有一种方法可以从调用类的上下文中获取对象($this,就像如果将$this传递为以下参数那样会发生什么

b::somestaticmethod($this);

为什么?

我打算在somestaticmethod()方法上实现多态行为,该方法将检查调用类,并基于该类的ancestor进一步指导逻辑。

1 个答案:

答案 0 :(得分:0)

反射似乎可以用于继承和静态类属性

<?php

class a {
  public static function x() {
    $callerObj = get_called_class();
    return new ReflectionClass($callerObj); 
  }
}

class b extends a {
    public static $y = [0, 1, 2];

    public static function z() {
        return parent::x()->getProperty('y')->getValue();
    }
}

print_r(b::z());
array_push(b::$y, 3);
print_r(b::z());