【问题标题】:magic constant __CLASS__ used with get_class_vars() giving error [duplicate]与 get_class_vars() 一起使用的魔术常量 __CLASS__ 给出错误 [重复]
【发布时间】:2015-04-05 21:20:49
【问题描述】:

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

【问题讨论】:

    标签: php class oop


    【解决方案1】:

    我认为你的问题出在这一行:

    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;
       }
    
    
    }
    

    【讨论】:

      【解决方案2】:

      您不能在类定义中为类属性分配“动态”值。您可以在构造函数中移动它们。另外我认为你想要$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

      还有一段话:

      这个声明可能包含一个初始化,但是这个初始化必须是一个常量值——也就是说,它必须能够在编译时被评估,并且不能依赖运行时信息才能被评估。

      【讨论】:

        猜你喜欢
        • 2012-09-19
        • 2023-04-07
        • 1970-01-01
        • 2012-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 2012-10-16
        相关资源
        最近更新 更多