与get_class_vars()一起使用的magic constant __CLASS__给出了错误

时间:2015-02-05 20:55:14

标签: php class oop

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

2 个答案:

答案 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

从那里引用:

  

此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。