duandi8852752 2011-07-18 09:19
浏览 15

如何在PHP中使用带有范围解析运算符的get_class()?

<?php
class X {
    function foo() {

        echo "Class Name:".get_class($this)."<br>"; //it displays Y... :)
        echo get_class($this)::$public_var; //not working
        echo Y::$public_var; //works
        Y::y_method();  //works
        get_class($this)::y_method(); //not working

        $classname = get_class($this);
        $classname::y_method(); // again not working..  :( 
    }

    function bar() {
        $this->foo();
    }
}

class Y extends X {

    public static $public_var = "Variable of Y Class";
    public function y_method()
    {
        echo "Y class method";
    }
}

$y = new Y();
$y->bar();

?>
my only question is how to get access members of y class only with dynamically providing class name without changing current structure.
  • 写回答

1条回答 默认 最新

  • duandong9195 2011-07-18 09:34
    关注

    You are looking for get_called_class()

    class X {
        function foo() {
        $that = get_called_class();
            echo $that::$private_var;
            echo $that::y_method();
        }
    
        function bar() {
            $this->foo();
        }
    }
    
    class Y extends X {
    
        public static $private_var = "Variable of Y Class";
        public function y_method()
        {
            echo "Y class method";
        }
    }
    
    $y = new Y();
    $y->bar();
    
    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?