这里有一个名为vars的私有变量,用于存储类中的所有变量。我使用get_class_vars(__CLASS__)
来获取所有的变量。但它给出了一个解析错误。
Parse error: syntax error, unexpected '(', expecting ',' or ';' in C:xampphtdocspracticebal.php on line 5
如果我删除了get_class_vars(__CLASS__)
,代码就工作了。是什么原因导致了问题??
class lol{
static private $message='i am shimantta !! ';
private $msg='new';
private $vars=get_class_vars( __CLASS__ );
public function __get($var){
echo $this->$var;
}
}
$lol1=new lol();
$lol1->vars;
不能在类定义中将"dynamic"值分配给类属性。您可以在构造函数中移动它们。我还认为你想要$var
->$vars
,然后它是一个数组,所以使用print_r()
或var_dump()
,就像这样:
class lol {
static private $message = "i am shimantta !! ";
private $msg = "new";
private $vars= "";
public function __construct() {
$this->vars = get_class_vars( __CLASS__);
}
public function __get($vars){
print_r($this->$vars);
}
}
$lol1 = new lol();
$lol1->vars;
有关属性的更多信息,请参阅手册:http://php.net/manual/en/language.oop5.properties.php
还有一句话:
此声明可能包括一个初始化,但此初始化必须是一个常数值——也就是说,它必须能够在编译时进行求值,并且必须不依赖于运行时信息才能进行求值。
我认为你的问题在这一行:
private $vars=get_class_vars( __CLASS__ );
在定义类var时不能使用函数,应该在构造函数中使用:
class lol{
private static $message='i am shimantta !! ';
private $msg='new';
private $vars;
function __construct() {
$this->vars=get_class_vars( __CLASS__ );
}
public function __get($var){
echo $this->$var;
}
}