-4

RedBeanのマニュアルでは、ORM を Zend Framework に統合する方法が提案されています。

マニュアルから:-

Zend ブートストラップ ファイルを開き、以下を追加します。

   public function run() {
         $loader = Zend_Loader_Autoloader::getInstance()->registerNamespace("RedBean_");
         require_once( APPLICATION_PATH . "/../library/RedBean/redbean.inc.php"); //or rb.php
         R::setup( "mysql:host=localhost;dbname=timereg", "root" );
         Zend_Registry::set("tools", R::$toolbox);
         Zend_Registry::set("db", R::$adapter);
         Zend_Registry::set("redbean", R::$redbean);
         parent::run();
   }

この方法は、必要かどうかにかかわらず、すべてのコントローラーで ORM が設定されているため、最も効率的であるとは思えません。私が好きではない Zend_Registry も使用しています。

RedBean には、適切に統合する必要があり、application.ini を介して構成することでメリットが得られる特定の機能もあります。

RedBean ORM をより効率的なZend のような方法で Zend Framework に統合するにはどうすればよいですか?

4

1 に答える 1

4

redbean.inc.php が何をするかによっては、これの効率をあまり改善できないと思います。ファイルでの要求と DB 接続のセットアップのオーバーヘッドは、それほど大きくない可能性があります。

提案されたコードを次のように少し変更します。

protected function _initRedBean()
{
    $loader = Zend_Loader_Autoloader::getInstance()->registerNamespace("RedBean_");
    require_once APPLICATION_PATH . "/../library/RedBean/redbean.inc.php"; //or rb.php
    R::setup( "mysql:host=localhost;dbname=timereg", "root" );
    Zend_Registry::set("tools", R::$toolbox);
    Zend_Registry::set("db", R::$adapter);
    Zend_Registry::set("redbean", R::$redbean);
}

run() メソッドをオーバーライドする代わりに、ブートストラップの組み込みのリソース読み込みを利用する (悪い習慣)。

Zend_Db も使用している場合は、既存の PDO 接続を単純に渡して 2 つ目の接続を作成しないようにすることもできますが、それにはコードを掘り下げる必要があります。

于 2012-05-30T21:14:28.247 に答える