2013-01-07 37 views
0

一直試圖弄明白:

$utils = $this->load('helper', 'Utils'); 
$action = $utils->getAction() . '()'; 
$this->${action}; 
} 
public function Name() { .... } 

$action應該是操作鍵的$_GET$_POST值。

如何使用$this->$action()加載方法$action

謝謝!

+0

'$行動= $ _GET [ '行動']; $這 - > $行動();'? – Supericy

+0

您不需要$符號即可。只需$ this-> action() –

+1

@Supericy,使用它給我的Helper'不能將對象轉換爲字符串',我想使用助手,因爲我必須從$ _POST或$ _GET獲取許多參數,並且這樣我不重寫相同的代碼。 – JorgeeFG

回答

2

你不想追加()到字符串,但將它們添加到該調用。

像這樣:

$utils = $this->load('helper', 'Utils'); 
$action = $utils->getAction(); 
$this->$action(); 

他們被稱爲 「變量函數」 - http://php.net/manual/en/functions.variable-functions.php

+0

非常感謝!那個男人呢?我甚至不知道要搜索什麼。 – JorgeeFG

+0

變量功能 - 添加手動鏈接來回答。 –

1

如果它可以是$ _GET $ _POST,那麼您可以使用$ _REQUEST。

所以你的情況會是這樣的:

$action = $_REQUEST['action']; 
$this->$action(); 

但是解決您所提供的代碼只是做:

$utils = $this->load('helper', 'Utils'); 
$action = $utils->getAction(); 
$this->$action(); 
+0

非常感謝$ _REQUEST的東西,不知道它! – JorgeeFG