CodeGen_PECL 1.1.0リリース
ほぼ1年ぶりにバージョン1.1.0がリリースされた模様。
以前、interfaceとclassを同じextensionで定義した場合の不具合についてのエントリを上げていましたが、報告したら修正されたようで、このリリースにも含まれていました。ということで、第25回PHP勉強会でやったコード一式 - Do You PHP はてなで使ったspecファイルChanges since 1.0.4:
- new function prototype parser
- added PHP version check to config.m4
- functions accepting/returning resources or classes
or using constants for default values now "inherit"
conditional compilation settings from these elements
- disabled output of AC_CHECK_TYPE checks for resource
types due to autoconf version conflicts
- varargs support
<?xml version="1.0"?> <extension name="mini" version="0.0.1"> <interface name="TestInterface"> </interface> <class name="ParentClass"> <summary>ParentClass</summary> <implements interface="TestInterface"/> <property name="_type" access="private" type="int" value="0"/> <function name="setType1" access="protected"> <proto>string setType1(string type)</proto> </function> </class> <class name="testClass" extends="ParentClass"> <summary>testClass</summary> <function name="setType2" access="public"> <proto>string setType2( [string type])</proto> </function> </class> <function name="setType3"> <proto>void setType3(int type)</proto> </function> <function name="getType4"> <proto>array getType4(float type1, int type2)</proto> </function> <function name="getType5"> <proto>array getType5(float type1, int type2, array &type3 [, object type4])</proto> </function> </extension>
から生成されたCソースのPHP_MINIT_FUNCTIONを確認したところ、
PHP_MINIT_FUNCTION(mini) { interface_init_TestInterface(); class_init_ParentClass(); class_init_testClass(); /* add your stuff here */ return SUCCESS; }
という具合に
- インターフェース
- クラス
の順になっていました。