这里我有一个名为vars的私有变量,它用于存储类中的所有变量。我使用get_class_vars(__CLASS__)
来获取所有变量。但是它给出了一个解析错误。
Parse error: syntax error, unexpected '(', expecting ',' or ';' in C:\xampp\htdocs\practice\bal.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;
答案 0 :(得分:2)
我认为你的问题就在这一行:
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;
}
}
答案 1 :(得分:1)
您无法在类定义中为类属性指定“动态”值。您可以在构造函数中移动它们。另外我想你想要$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
从那里引用:
此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。