2014-01-10 50 views
4

我想了解這行代碼:訪問一個未聲明的方法在一類具有PHP

$ret = $box->$command(); 

方法命令不在類$中定義,這是奇怪的是,有一個指令前的$。我只是不明白。

+0

我們可以用__set(),__get()來做到這一點。檢查文件。 –

+0

這篇文章解釋它很不錯:http://stackoverflow.com/questions/1005857/how-to-call-php-function-from-string-stored-in-a-variable –

回答

4

這會執行存儲在$box中存儲的對象上的$command變量中名稱爲的方法。

因此,假設類的$box有一個叫做foo方法,那麼這會工作:

$command = "foo"; 
$box->$command(); 

和將相當於

$box->foo(); 

只有前者的方式更加靈活,因爲它允許您根據變量的值動態調用函數。請注意檢查$command的可能值,但請注意,它不會被用戶輸入以某種方式填充(這可能允許惡意人員使用php代碼執行意想不到的事情)。

4
$foo = 'bar'; 
$obj->$foo(); // calls the bar() method 

你在看變量方法調用

2

$command將是一個字符串,其值是該類定義中方法的名稱。

相關問題