Php 如何使用推进ORM实现Zend框架
我想将Php 如何使用推进ORM实现Zend框架,php,zend-framework,orm,propel,Php,Zend Framework,Orm,Propel,我想将spreep与Zend框架集成。我在过去看到过整合主义,但我认为这似乎有点不同 spreep已经有两件事了:第一件是spreep包含了它自己的自动加载器,这意味着我不必试图强迫spreep进入Zend Framework的文件系统结构。第二个是spreep旨在让您轻松地将其文件放在任何您想要的地方,只要您正确地更新include路径即可。这使得这个过程比我想象的要容易得多 但是这篇文章没有详细说明如何完成它。我猜我必须修改ZendBootstrap.php和application.ini(
spreep
与Zend框架
集成。我在过去看到过整合主义,但我认为这似乎有点不同
spreep已经有两件事了:第一件是spreep
包含了它自己的自动加载器,这意味着我不必试图强迫spreep
进入Zend Framework
的文件系统结构。第二个是spreep
旨在让您轻松地将其文件放在任何您想要的地方,只要您正确地更新include路径即可。这使得这个过程比我想象的要容易得多
但是这篇文章没有详细说明如何完成它。我猜我必须修改Zend
Bootstrap.php
和application.ini
(我使用的是最新的Zend 1.10.8
),但是我发现很难找到一篇关于Zend
最新版本的帖子
任何人都可以评论如何以最流畅的方式完成这项工作
另一个问题:spreep
是否有命令行界面,或者如果我使用的是Zend
的命令行界面,我是否不需要spreep的命令行界面?您尝试过吗
我在Symfony之外没有使用过spreep,但从我对spreep的了解来看,我认为以下类似的东西适用于运行时的东西:
在引导程序中
public function initPropel()
{
require_once 'Propel.php';
Propel::init($this->getOptions('propelConfig'));
// so we can get the connection from the registry easily
return Propel::getConnection();
}
在您的application.xml中(如果您喜欢的话,请适应ini)
如果需要,甚至可以不直接加载从配置文件解析的数组,而是创建一个PropelConfiguration
对象,通过编程设置所有参数,然后将其传递给setConfiguration
至于构建工具,我发现与Zend_工具集成是一种折磨,因此我倾向于依赖phing
或自定义shell脚本来完成所有这些。除非您计划在很多项目上使用Propel,否则可能没有时间实现这种级别的集成。不久前,我用Doctrine 1.x完成了这项工作,花了几周时间解决了所有问题:-)我将推进库放在“您的Zend_项目/库”中,其中有一个名为推进的文件夹,其中包含运行时文件夹
然后,我将这段代码放在bootstrap.php中
protected function _initPropel()
{
//require Propel Library
require '../library/Propel/runtime/lib/Propel.php';
//initialize Propel configuration
Propel::init(APPLICATION_PATH . '/configs/orm-conf.php');
//initialize Propel connection
Propel::initialize();
//return Propel Connection
return Propel::getConnection();
}
我的推进配置文件位于“您的Zend项目/应用程序/配置”中
您还需要修改index.php文件,以便找到您生成的ORM模型:
设置包含路径(内爆(路径分隔符,数组(
realpath(应用程序路径“/../library”),
realpath(应用程序路径“/models”),
获取包含路径(),
)));
您可以将模型放置在“Zend Project/application/models/database”名称中,该名称由“database name=“orm”标记中的xml属性在schema.xml中设置。只需尝试将spreep的init添加到index.php文件中,然后再设置自动加载过程。
在这种情况下,Zend_自动装弹机无法与推进自动装弹机构交互。
对我来说,它很好用,但我不确定它是不是一个好的设计…是的,它们是2006年和2008年的。Zend改变了很多。我如何适应ini?我没有idea@rodrigo:这应该是一个相当简单的翻译,因为结构并不复杂。。。我认为您可以直接在INI中解析常量,所以您所要做的就是在正确的部分中使用键值对。我可能又错了,我从不使用INI格式。如果你不明白,我会发布一个新的问题。。。这样你会得到更多的回应:-)
public function initPropel()
{
require_once 'Propel.php';
Propel::setConfiguration($this->getOptions('propelConfig'));
Propel::initialize();
// so we can get the connection from the registry easily
return Propel::getConnection();
}
protected function _initPropel()
{
//require Propel Library
require '../library/Propel/runtime/lib/Propel.php';
//initialize Propel configuration
Propel::init(APPLICATION_PATH . '/configs/orm-conf.php');
//initialize Propel connection
Propel::initialize();
//return Propel Connection
return Propel::getConnection();
}