RedBean suggests a method for integrating the ORM into 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从配置中受益: -
如何以更加高效 Zend的方式将RedBean ORM集成到Zend Framework中?
答案 0 :(得分:4)
根据redbean.inc.php的作用,我认为你不能过多地提高效率。在文件中要求和建立数据库连接的开销可能不大。
我会将建议的代码稍微更改为:
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);
}
利用bootstrap的内置资源加载,而不是重写run()方法(不好的做法)。
如果您还使用Zend_Db,可以简单地传入现有的PDO连接,以避免创建第二个连接,但这需要在代码中进行一些挖掘。