2010-05-28 68 views
3

如何獲取控制器操作中的資源? 資源數據庫已在application.ini中初始化。如何獲取控制器操作中的資源?

class IndexController extends Zend_Controller_Action 
{ 

    public function init() 
    { 
     /* Initialize action controller here */ 
    } 

    public function indexAction() 
    { 
     // I want db resource here 
    } 
} 

回答

4

嘗試,看看,如果這個工程:

$this->getFrontController()->getParam('bootstrap')->getResource('db') 
+2

所以是正確: $ DB = $這個 - > getInvokeArg( '引導') - >的getResource( 'DB'); – 2010-05-28 14:30:11

1

UPDATE:雖然這種解決方案的工作原理,它是推薦 做法。請閱讀評論 @Brian M.以下。

您可以使用Zend_Registry。在初始化引導數據庫連接,並將其存儲在註冊表中:

// set up the database handler 
// (...) 
Zend_Registry::set('dbh', $dbh); 

然後你可以從其他地方retireve它:

$dbh = Zend_Registry::get('dbh'); 
+2

我不認爲像這樣使用註冊表是一個聰明的想法。 ZF爲您提供了一種訪問資源的方式,依靠全局註冊表可能會產生問題。如果你想更容易地訪問資源,請嘗試在這裏使用注入方法:http://weierophinney.net/matthew/archives/235-A-Simple-Resource-Injector-for-ZF-Action-Controllers.html – 2010-05-28 14:59:25

+0

這是一個更優雅的方法,感謝提示:) – nuqqsa 2010-05-28 15:36:27

0

在回答a similar question on Nabble,馬修·威爾O'Phinney(Zend的先生框架1)建議使用這種形式:

$this->getInvokeArg('bootstrap')->getResource('db'); 

因此,在這種q的上下文題目了,這將是這樣的:

class IndexController extends Zend_Controller_Action 
{ 

    public function init() 
    { 
     /* Initialize action controller here */ 
    } 

    public function indexAction() 
    { 
     // db resource here 
     $db = $this->getInvokeArg('bootstrap')->getResource('db'); 
    } 
} 
相關問題