2015-02-05 90 views
0

這裏我有一個叫vars的私有變量,用於存儲類中的所有變量。我使用get_class_vars(__CLASS__)來獲取所有變量。但它給出了一個分析錯誤。魔法常量__CLASS__與get_class_vars()一起使用給出錯誤

Parse error: syntax error, unexpected '(', expecting ',' or ';' in C:\xampp\htdocs\practice\bal.php on line 5 

如果我刪除了get_class_vars(__CLASS__)代碼works.What可能會導致問題??

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; 

回答

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

從那裏報價:

該聲明可能包括一個初始化,但是這個初始化必須是一個常量值 - 也就是說,它必須能夠在編譯時進行評估,並且不能依賴於運行時間,時間信息以便被評估。

2

我覺得你的問題是在這條線:

private $vars=get_class_vars(__CLASS__); 

定義一個類變種時,您不能使用的功能,你應該做的是,在構造函數:

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


} 
相關問題