2016-05-21 93 views
0

我需要調用類中的某些函數;基於變量,像這樣:數組到字符串轉換 - 變量函數名稱調用

$x->$y(); 

但是,我發現了一個奇怪的現象,請考慮下面的示例代碼:

$arr = array(

    "some_index" => "func_name" 
); 


$str = "func_name"; 

class some_class { 

    public function func_name() { 

     echo "It works in class!"; 
    } 
} 

$some_obj = new some_class(); 

$some_obj->$arr['some_index'](); 
$some_obj->$str(); 

現在行

$some_obj->$arr['some_index'](); 

給人的錯誤:

Array to string conversion in ...
Undefined property: some_class::$Array in ...
Uncaught Error: Function name must be a string in...

不過,該行

$some_obj->$str(); 

完美的作品。

此外,如果函數未在類中定義,則兩條線都可以工作。

任何人都知道爲什麼會發生這種情況?

+1

'$ some_obj - > {$改編[ 'some_index']}();' – splash58

+0

是啊,這工作...你知道錯誤的原因?它曾經在PHP –

+0

以前的版本中工作,「爲了使用變量變量* ... http://php.net/manual/en/language.variables.variable.php – splash58

回答