第25回PHP勉強会でやったコード一式
勉強会でやったファイルそのものではないですが、とりあえず上げておきます。
まあ、PEAR::PHP_Parserのサンプルとして見てもらった方が良いかも知れません。
で、先ほど気づいたんですが、PEAR::CodeGen_PECLのspecファイルにクラスとインターフェースを同時に定義すると、生成されたCソース内にあるPHP_MINIT_FUNCTION関数で
- クラス
- インターフェース
の順でそれぞれのinit関数が呼び出されてしまいます。。。つまり、
class TestClass implements TestInterface
のような場合、
PHP Warning: Couldn't find interface 'TestInterface' while setting up class 'TestClass', skipped in Unknown on line 0
となってしまいます。この場合、PHP_MINIT_FUNCTIONで順番を
- インターフェース
- クラス
にしてやると大丈夫そうです。
が、手元の環境では
<?php class TestClass extends ParentClass implements TestInterface
とするとsegfaultしてしまいました。。。前述のサンプルでは、苦し紛れに
<?php class ParentClass implements TestInterface class TestClass extends ParentClass
としちゃってます。え〜。。。orz