昨日のエントリーは間違いだらけですね

Doctrine_RecordのgetTitle()とget('title')が云々という話で。

Doctrine_Recordの実装が1.0から変わって、getTitle()を探しに行くようにデフォルトでなっていました。

以前のsfDoctrineRecordではget()とrawGet()メソッドがあって、get()ではgetTitle()を探しにいってみつからなければrawGet()を呼び、rawGet()はparent::get()を呼ぶ、という処理をしていました。

これがDoctrine 1.0からDoctrine_Recordがこの機能を取り込んでおり、Doctrine_Record->get()がgetTitle()を探し、見つからなければ_get()メソッドを呼び、_get()が実際に値を取得する、という流れになっていました。ちなみに_get()は色々何かやってるみたいですが、本当にとってくるだけのrawGet()メソッドもあるようです。

ただし、Doctrine単体だとgetTitle()メソッドを定義していない場合にgetTitle()を呼び出した場合はエラーになるっぽいです。これはsfDoctrineRecordの__callで実装されており、Doctrine_Recordにはないようです。実装すればいいのに。

なんか書いててわけがわからなくなってきますが、内部実装が変わっただけで挙動そのものは変わっていないようです。そこだけは一安心。

最近やっとDoctrine1.0をさわりだしたので全然変更についていけてないですね。ダメダメです。

Doctrine1.1についてもちょっと調べたのですが、変更前の値が取得できるようになったり、指定した2つのカラムをkey=>value形式の配列に変換するメソッドが実装されていたりと色々と面白そうです。

Doctrineは着実に進化していってますね。どこぞの言語とは違いますね。