2011-12-01 287 views
0

創建自變量的類實例我有一些看法,我需要調用static function test()從中class Plugin_Magazine extends Zend_Controller_ActionZend框架

鑑於我這樣做如下因素:

$class_name = 'Plugin_'.$plugin; 
$class_name::test(); 

結果我有

Catchable fatal error: Argument 1 passed to Zend_Controller_Action::__construct() must be an instance of Zend_Controller_Request_Abstract, none given

但是,如果I W \創建class Plugin_MagazineØ延伸一切工作正常。

問題是:我可以以某種方式做我需要的東西或忘記繼承?

+0

第一個問題是:爲什麼要調用一個靜態方法來調用構造函數? – Rijk

+0

問題已通過call_user_func解決(array($ controller_name,'test')) – aloneibreak

+0

將您的答案標記爲已解決,然後編寫答案,不要將其發佈在那裏,因爲它仍然是打開的。 –

回答

1

你需要一個Request對象傳遞給Action類

在somepint的構造你這樣做:

$pm = new Plugin_Magazine(); 

但你需要傳遞request對象:

$pm = new Plugin_Magazine($this->getRequest()); 

至於這個電話:

$class_name = 'Plugin_'.$plugin; 
$class_name::test(); 

爲什麼在Action中需要一個靜態函數?這看起來不正確,如果它是一個Action中存在的可重複使用的邏輯,它應該被移動到其他地方更容易使用的地方,比如模型。

+0

其實靜態或者公共會test()沒有關係。 試圖做$ plugin = new Plugin_Magazines($ this-> getRequest()); 在註冊表中找不到名爲'GetRequest'的插件 – aloneibreak

+0

您在哪裏調用此代碼? –

+0

在某些視圖文件中。 – aloneibreak