我很久以前就发现了PHP-ActiveRecord,经过近一个月的努力来编写自己的ORM(我很难做到这一点)并且我爱上了它。之前我曾看过Doctrine和Propel,但由于纯粹的复杂性和学习曲线,我决定逃跑。对于AR,我没有其他人的焦虑和学习困难。
此后不久,我还发现了symfony框架(在发现其他框架过于膨胀之后,我也试图从stratch创建自己的框架)。但是,我有一个问题:使用Doctrine和Propel作为开箱即用的ORM /抽象层的symfony框架,没有任何关于如何更改它的文档。
我还没有真正使用过symfony,我一直在阅读“温柔的介绍”一书。 ORM /抽象层似乎从symfony的核心稍微删除,似乎很容易转换所有内容。问题是......是吗?
有没有人有任何使用ActiveRecord和symfony的经验,甚至使用除了Doctrine / Propel和symfony以外的任何东西?
答案 0 :(得分:3)
我会将ActiveRecord代码捆绑为Symfony插件。您可以阅读有关创建Symfony插件here的更多信息。基础是:
plugins/sfActiveRecordPlugin
文件夹。将活动记录代码放在plugins/sfActiveRecordPlugin/lib/vendor
。sfActiveRecordPlugin/config/config.php
内放置任何引导ActiveRecord需要的内容。每次实例化ProjectConfiguration时都会执行此代码。如果ActiveRecord拥有自己的自动加载器,您可能需要在此处解决此问题。您可能还需要将Symfony设置为忽略ActiveRecord类,这可以通过autoload.yml
完成。在ProjectConfiguration
课程中启用您的插件:
class ProjectConfiguration extends sfProjectConfiguration
{
public function setup()
{
$this->enablePlugins(array(
'sfActiveRecordPlugin',
));
}
}
启用插件调用将禁用未明确启用的任何插件。如果您愿意,也可以使用不想加载的插件调用disablePlugins。
这应该是大部分工作。
最后,我会敦促你给Doctrine另一个镜头。 Doctrine是一个非常强大的ORM,IMO是最好的ORM。另外,Symfony附带了很多Doctrine特定的东西,你最终会重写一些。