アイデアは、あなたのブートストラップは、設定ファイルを読み込み、あなたが作成するデータベース・アダプタを記述するために設定項目を宣言することである:
[bootstrap]
resources.db.adapter = Pdo_Mysql
resources.db.params.dbname = "mydatabase"
resources.db.params.username = "webuser"
resources.db.params.password = "XXXX"
resources.db.isDefaultTableAdapter = true
あなたが右の規則次のconfigキーを使用する場合、これは自動的に信号ブートストラップ基本クラスはZend_Application_Resource_Db
オブジェクトを作成して初期化し、bootstrap resource registryに格納します。
後でコントローラで、リソースレジストリにアクセスできます。 注:私はもう少しテストした後、このコードを編集しました。
class SomeController extends Zend_Controller_Action
{
public function init()
{
$bootstrap = $this->getInvokeArg("bootstrap");
if ($bootstrap->hasPluginResource("db")) {
$dbResource = $bootstrap->getPluginResource("db");
$db = $dbResource->getDbAdapter();
}
}
}
また、あなたはデフォルトなZend_Registryにオブジェクトを保存するために、あなたのブートストラップ・クラスでカスタムのinitメソッドを書くことができます:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initDb()
{
if ($this->hasPluginResource("db")) {
$dbResource = $this->getPluginResource("db");
$db = $dbResource->getDbAdapter();
Zend_Registry::set("db", $db);
}
}
}
今、あなたは一歩の代わりに、3であなたのdbオブジェクトにアクセスすることができます:
class SomeController extends Zend_Controller_Action
{
public function init()
{
$db = Zend_Registry::get("db");
}
}
個人的には、ブートストラップでリソースレジストリに一度だけアクセスする必要があるため、私は第2の手法を使用します。最初の例では、すべてのコントローラに同じコードブロックをコピーする必要がありました。
レジストリにdbを入れるのは悪い習慣なので、私は投票しました。 Zend_Controller_Actionを拡張し、保護されたプロパティとしてブートストラップからdbを取得する必要があります。 – venimus