> nao-pon です。
> class_exists() の第二引数の存在すら知りませんでしたので、これは、本当にびっくりしました。
> HypCommonFunc, xpWiki はプリロードやブロックで読み込まれますので、早速対策をとりました。
> On 2月25日, 午前11:54, "K. Ono" <onok...@gmail.com> wrote:
>> onokazuです。
>> 早速の対応ありがとうございます。
>> あとはサードパーティモジュールでも__autoloadを想定していない場合には、
>> この関数を使用してもらえるようになれば良いですね。
>> 2009/2/25 Minahito <minah...@gmail.com>:
>> > minahitoです。
>> > Cマクロライクなものに関しては大域関数を許すというコード規約に従って、まずは XCube_Root を修正してコミットしました。
>> > といっても畳込みが起こるわけではないので……
>> > 今後、PHP4/5の吸収マクロが増えていくようならPHP4用定義ファイルとPHP5用定義ファイルの2つを用意して、 include
>> > 時に読み替えるという方法も検討してみます。
>> > Trunk 以外は trunk 側の作業が終わり次第マージさせます。逆のような気もしますが気にしない。;;
>> > On 2009/02/24, at 9:36, のぶのぶ <nobun...@nobunobu.com> wrote:
>> >> のぶのぶです。
>> >>> class_exists() って、定義テーブルを見に行くだけだと思っていたので、PHP5の第2パラメータを見て驚いてしまいました。
>> >> 小生も少し気になって調べてみましたが、この第2パラメータ及び、class_exists()の
>> >> デフォルト動作については、いろいろなサイトで問題視されている記事を見かけますね。
>> >> これへの対応については、__autoload側で行われている場合もあるようですが...
>> >> XCLのように、モジュールのごった煮状態を許容している以上は、class_exists()の使用側で
>> >> 対応する以外ないようですね
>> >> 2009/02/24 9:13 Minahito <minah...@gmail.com>:
>> >>> minahitoです。
>> >>> class_exists() って、定義テーブルを見に行くだけだと思っていたので、PHP5の第2パラメータを見て驚いてしまいました。
>> >>> ラッパーというか、マクロ的関数を追加して、コアの守備範囲を書き換えておきますね。
>> >>> On 2009/02/23, at 21:35, "K. Ono" <onok...@gmail.com> wrote:
>> >>>> onokazuです。
>> >>>> 自己レスです。PHP4だとwarning出るだけかと思っていたら、返り値も
>> >>>> nullになってしまうんですね。そうなると単純に引数追加じゃ無理か。。
>> >>>> 対応するにはコア側でclass_existsをラップした関数作るしかなさそうですね。
>> >>>> 2009/2/23 K. Ono <onok...@gmail.com>:
>> >>>>> onokazuです。
>> >>>>> XCLのコアでclass_exists関数が結構使われていますが、PHP5環境のために
>> >>>>> 2番目の引数をfalseにしてもらえないでしょうか。モジュール側で
>> >>>>> __autoloadを定義している場合、class_existsの呼び出しの度にモジュール
>> >>>>> 側の__autoloadが呼ばれてしまって少し困っています。
>> >>>>> コア側で__autoloadを定義することはないと思いますし、影響はほとんどない
>> >>>>> のではと思います。PHP4とPHP5でクラスローディングの挙動が異なるのも
>> >>>>> バグと言えなくもないですし。。
>> >>>>> または、規定のファイルや関数が存在しない場合、クラスもないとみなす
>> >>>>> とか。。こっちの方が変更は多くなると思いますが。
>> >>>>> これに関連して、複数のモジュールで__autoloadが定義されていた場合、
>> >>>>> ブロックやプリロードでバッティングしてしまうことも考えられますので、
>> >>>>> 逆にコア側で中身は空でも構わないので__autoloadを定義しておくのも良い
>> >>>>> かもしれないですね。モジュール側で__autoloadが必要な場合には
>> >>>>> spl_autoload_registerを使うということで。
--