代码之家  ›  专栏  ›  技术社区  ›  Mohd Abdul Mujib

get_called_class()$此对象

  •  -1
  • Mohd Abdul Mujib  · 技术社区  · 7 年前

    我该怎么得到这个东西 $this 从哪个类调用当前函数?

    class a extends zebra {
      function xyz() {
         ...
         b::somestaticmethod();
      }
    }
    
    class b {
      public static function somestaticmethod() {
        $callerObj = get_called_class();
      }
    }
    

    功能 get_called_class() 以字符串格式获取调用类的名称。我要找的是,有没有办法得到这个东西( )从调用类的上下文中,就像如果 $这个

    b::somestaticmethod($this);
    

    为什么?

    我计划在 somestaticmethod() ancestor 那门课的逻辑更进一步。

    1 回复  |  直到 7 年前
        1
  •  0
  •   dcd018    7 年前

    反射似乎与继承和静态类属性一起工作

    <?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());