[s2container-php5:92] Re: s2dao.php5 +コメントアノテーションでMethod XXXX does not exist
SHIMOOKA Hideyuki
[E-MAIL ADDRESS DELETED]
2007年 4月 28日 (土) 14:58:25 JST
下岡です。
---- kloveさん曰く...
>klove です。
>はじめまして。
こんにちは。はじめまして :-)
>SHIMOOKA Hideyuki さんは書きました:
>> s2dao.php5のexamplesにあるコメントアノテーションのサンプルを
>> 試していますが、
>> ReflectionException: Method content does not exist in ...
>> となってしまいます。
(snip)
>s2dao.php5-1.1.2/examples/s2dao_comment/example.inc.php に
>S2CONTAINER_ANNOTATION_READER 定数を定義すると cd_select1.php
>が実行できることを確認しました。
>
>example.inc.php
>-------------------------------------------
>・・・
>define('S2DAO_PHP5_USE_COMMENT', true);
>define('S2CONTAINER_ANNOTATION_READER','S2DaoAnnotationReader');
>・・・
>-------------------------------------------
ありがとうございます。
こちらでも上記で動作することを確認しました。
>また、s2daoをバージョン1.1.1では問題なく実行できました。
これも確認しました。正しく動作しています。
とりあえず、定数を追加することで進めていこうと思います。
>バージョン1.1.2での変更が関係しているようです。
ちょっとだけソースを追ってみましたが、1.1.1と1.1.2のdiffを
取ってみると
----ここから
$ diff s2dao.php5-1.1.1/S2Dao/s2dao.core.classes.php \
S2Dao.PHP5-1.1.2/S2Dao/s2dao.core.classes.php
750,751c750,751
< if (strcasecmp($propName, $timestampPropertyName) == 0) {
< $this->setTimestamp(time());
---
> if (strcasecmp($propName, $timestampPropertyName) === 0) {
> $this->setTimestamp(date('Y-m-d H:i:s', time()));
753c753
< } else if (strcmp($propName, $versionNoPropertyName) == 0) {
---
> } else if (strcmp($propName, $versionNoPropertyName) === 0) {
1158c1158
< if(class_exists('S2Container_AnnotationContainer')){
---
> if(class_exists('S2Container_AnnotationContainer', false)){
----ここまで
S2Dao_AbstractAnnotationReader#setCommentAnnotationHandler
にあるclass_existsの引数にfalse(autoloadしない)が追加されて
いたので、trueもしくは引数を削除すると期待する動作をしました。
#他への影響範囲は分かりませんが。。。
--
SHIMOOKA Hideyuki
S2Container-PHP5 メーリングリストの案内