PHP-ActiveRecord を symfony の ORM/抽象化レイヤーとして使用する方法はありますか?

StackOverflow https://stackoverflow.com/questions/3756014

質問

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

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

私はまだ実際に symfony を使用したことがなく、「Gentle Introduction」という本を読んでいます。ORM/抽象化レイヤー らしい symfony の中核からは少し離れていますが、 らしい すべてを簡単に変換できるようにします。質問は...それは...ですか?

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

役に立ちましたか?

解決

ActiveRecord コードを Symfony プラグインとしてバンドルします。Symfony プラグインの作成について詳しく読むことができます。 ここ. 。基本は次のとおりです。

  • を作成します plugins/sfActiveRecordPlugin フォルダ。アクティブなレコードのコードを入力します plugins/sfActiveRecordPlugin/lib/vendor.
  • ActiveRecord のブートストラップに必要なものをすべて内部に配置します 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 固有のものが多数付属しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top