Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用推进ORM实现Zend框架_Php_Zend Framework_Orm_Propel - Fatal编程技术网

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();

}