开发者

how to use get_class() with scope resolution operator in PHP?

<?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()
    {
     开发者_JS百科   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.


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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜