我刚刚在挣扎了将近一个月写自己的ORM之后,不久前就发现了PHP-Activerecord(我很难像这样),我爱上了它。我之前曾看过学说和推进,但由于纯粹的复杂性和学习曲线,决定逃跑。有了AR,我没有与其他人在一起的焦虑和学习困难。

此后不久,我还发现了Symfony框架(在发现其他框架过于肿的其他框架之后,我还试图从Stratch制作自己的框架)。但是,我有一个问题:使用Doctrine和Propel作为ORM/抽象层的Symfony框架,而没有任何有关如何更改它的文档。

我实际上还没有使用Symfony,我一直在阅读“温柔的介绍”书。 ORM/抽象层 似乎 有点从Symfony的核心和 似乎 很容易将所有内容转换。问题是...是吗?

是否有人使用Symfony使用ActivereCord或使用Symfony的Doctrine/Propel以外的其他任何经验?

有帮助吗?

解决方案

我会将ActivereCord代码捆绑为Symfony插件。您可以阅读有关创建Symfony插件的更多信息 这里. 。基本知识是:

  • 创建一个 plugins/sfActiveRecordPlugin 文件夹。将主动记录代码放入 plugins/sfActiveRecordPlugin/lib/vendor.
  • 将任何自举的ActivereCord都需要 sfActiveRecordPlugin/config/config.php. 。每次实例化项目配置时,该代码都会被执行。如果ActivereCord具有自己的自动加载器,则可能需要在此处解决。您可能还需要设置Symfony来忽略ActivereCord类,这是通过 autoload.yml.
  • 启用您的插件 ProjectConfiguration 班级:

    class ProjectConfiguration extends sfProjectConfiguration
    {
      public function setup()
      {
        $this->enablePlugins(array(
          'sfActiveRecordPlugin',
        ));
      }
    }
    

    启用插件调用将禁用任何未明确启用的插件。您也可以使用不想加载的插件来调用DisablePlugins,如果您愿意的话。

那应该是大多数工作。

最后,我敦促您给学说另一个镜头。学说是一个非常强大的ORM,IMO是那里最好的ORM。此外,Symfony还带有许多特定于学说的内容,您将至少重写其中的一些内容。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top