魔术常数__CLASS__与get_CLASS_vars()一起使用,给出错误



这里有一个名为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;
   }

}

相关内容

最新更新