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();
精彩评论