Doctrineの2.0がまったく別物になってる

PHPのORマッピングフレームワークで、symfonyにも公式にサポートされることになったDoctrineですが、先日リポジトリをみてみたら全然別物になってました。

こっちが1.0のブランチ。

http://trac.doctrine-project.org/browser/branches/1.0/lib/Doctrine

んでこっちがトランク。つまり2.0へ向けて動いているほう。

http://trac.doctrine-project.org/browser/trunk/lib/Doctrine

かなり大幅に変わるようです。構想とかはWikiを見るのがいいかも。

http://trac.doctrine-project.org/wiki/Doctrine2.0

とりあえずいくつかピックアップしてみると、

  • コア部分がORM/DBAL層にわかれる
    • DBALはデータベース抽象化レイヤー(DataBase Abstraction Layer)のこと
  • Doctrine_RecordがDoctrine::ORM::Entityに
  • Doctrine_TableがDoctrine::ORM::EntityManagerとDoctrine::ORM::EntityRepositoryに(?)
    • ファインダメソッドは全てEntityRepositoryに
    • EntityManagerがまだよくわからん
  • Doctrine::ORM::ActiveEntityというActiveRecordライクなEntityのクラス追加
  • TemplateやGeneratorがBehaviorクラスで抽象化される
  • Doctrine_Queryがちょっとかわるっぽい?
    • ここらへんもよくわからない
  • PDOなくても動くっぽい

ちなみにnamespaceっぽく書いてますが、現在の実装ではまだDoctrine_ORM_Entityのような感じです。ただソースの方は、

<?php
#namespace Doctrine::ORM;
abstract class Doctrine_ORM_Entity implements ArrayAccess, Serializable

こんな感じで既にやる気マンマンみたいです。流石Doctrine、前衛的ですね。Doctrineの「BC(笑)」みたいな雰囲気、僕は好きです。一応名前空間の構造もまとめられているみたいです。

http://trac.doctrine-project.org/wiki/SoureStructure

個人的に気になるのはActiveEntityクラスですね。どんな実装になるんだろう。find系はEntityRepositoryクラスにあるからそこに何かしらでつなぐと思われますが。

リリース予定は来年の9月1日っぽいです。今後もDoctrineから目が離せないですね!