0

自分の ORM を書くのに 1 か月近く苦労した後、PHP-ActiveRecord を発見したのはつい最近のことです (私はそのように頭が固いのです)。以前に Doctrine と Propel を見たことがありましたが、複雑さと学習曲線のために逃げることにしました。AR のおかげで、他の人たちと同じように不安や学習の難しさを感じることはありません。

その後まもなく、私は symfony フレームワークも発見しました (他のフレームワークが過度に肥大化していることを発見した後、ゼロから独自のフレームワークを作成しようとしていたこともありました)。ただし、問題が 1 つあります。Doctrine と Propel を ORM/抽象化レイヤーとしてそのまま使用する symfony フレームワークで、変更方法に関するドキュメントがありません。

symfony はまだ実際に使ったことがなく、「やさしい入門」という本を読んでいました。ORM/抽象化レイヤー、symfony のコアからいくらか取り除かれているようで、すべてを変換するのに十分簡単なようです。質問は...そうですか?

symfony で ActiveRecord を使用したり、symfony で Doctrine/Propel 以外のものを使用した経験のある人はいますか?

4

1 に答える 1

3

ActiveRecord コードを Symfony プラグインとしてバンドルします。Symfony プラグインの作成について詳しくは、こちらをご覧ください。基本は次のとおりです。

  • フォルダを作成しplugins/sfActiveRecordPluginます。に有効なレコード コードを入力しplugins/sfActiveRecordPlugin/lib/vendorます。
  • ActiveRecord のブートストラップに必要なものを .xml 内に配置しsfActiveRecordPlugin/config/config.phpます。このコードは、ProjectConfiguration がインスタンス化されるたびに実行されます。ActiveRecord に独自のオートローダーがある場合は、おそらくここで解決する必要があります。ActiveRecord クラスを無視するように Symfony を設定する必要がある場合もあります。これは を介し​​て行われautoload.ymlます。
  • ProjectConfigurationクラスでプラグインを有効にします。

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

    enable plugins 呼び出しは、明示的に有効になっていないプラグインを無効にします。必要に応じて、ロードしたくないプラグインで disablePlugins を呼び出すこともできます。

それがほとんどの仕事のはずです。

最後に、Doctrine をもう一度試すことをお勧めします。Doctrine は非常に強力な ORM であり、IMO は最高のものです。さらに、Symfony には Doctrine 固有の要素が多数付属しており、それらの少なくとも一部を書き直すことになります。

于 2010-09-20T22:56:15.097 に答える