2012年6月27日 星期三

Zend Framework多資料庫設定

因為在ZF中資料庫是以資源的方式提供
所以在application.ini中設置
[production]
resources.multidb.db1.adapter = "pdo_mysql"
resources.multidb.db1.host = "localhost"
resources.multidb.db1.username = "webuser"
resources.multidb.db1.password = "XXXX"
resources.multidb.db1.dbname = "db1"
resources.multidb.db2.adapter = "pdo_pgsql"
resources.multidb.db2.host = "example.com"
resources.multidb.db2.username = "dba"
resources.multidb.db2.password = "notthatpublic"
resources.multidb.db2.dbname = "db2"
resources.multidb.db2.default = true
再由Bootstrap取得資料庫

$resource = $bootstrap->getPluginResource('multidb');
$db1 = $resource->getDb('db1');
$db2 = $resource->getDb('db2');
$defaultDb = $resource->getDb();

2012年6月22日 星期五

ZendFramework的bootstrap

在ZendFramework的bootstrap中,如果方法名稱以_init為前綴,將被當成資源方法
來自動執行,如果你手上有現成的資源插件(Pluging),可以透過前導的方法 將該資源
排定執行 但該注意的是 當你是使用module模式時 所有module下的bootstrap將會全部
執行 造成 資源重載  效能低下 後來是以取得該module name為判斷 當非執行該module就return 不繼續執行執行非該module的pluging


class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initView()
    {
        $view = new Zend_View();
        // more initialization...
        return $view;
    }
}
class FooController extends Zend_Controller_Action
{
    public function init()
    {
        $bootstrap = $this->getInvokeArg('bootstrap');
        $view = $bootstrap->getResource('view');
        // ...
    }
}