## ext_skel スクリプト

PHP 拡張モジュールには、共通に含まれるファイルがいくつかあります。 その多くは拡張モジュールの種類に関わらずほぼ同じ内容ですが、 毎回それをコピーするのは面倒です。 幸いなことに、そのような初期作業を代わりに行ってくれるスクリプトがあります。 それが ext_skel で、 PHP 4.0 以降に同梱されています。

PHP 5.2.2 で、何もパラメータを指定せずに ext_skel を実行した結果は、次のようになります。

    php-5.2.2/ext$ ./ext_skel
    ./ext_skel --extname=module [--proto=file] [--stubs=file] [--xml[=file]]
               [--skel=dir] [--full-xml] [--no-help]

      --extname=module   module is the name of your extension
      --proto=file       file contains prototypes of functions to create
      --stubs=file       generate only function stubs in file
      --xml              generate xml documentation to be added to phpdoc-cvs
      --skel=dir         path to the skeleton directory
      --full-xml         generate xml documentation for a self-contained extension
                         (not yet implemented)
      --no-help          don't try to be nice and create comments in the code
                         and helper functions to test if the module compiled

一般に、新しい拡張モジュールを開発する際に使うであろうパラメータは --extname と --no-help のみです。 拡張モジュールの構成に慣れるまでは、 --no-help を指定しないようにしましょう。 そうすることで、ext_skel が生成するファイルに有用なコメントがたくさん含められるようになります。

残ったオプションは --extname です。 これは、作成する拡張モジュールの名前を ext_skel に伝えるためのものです。ここで指定する名前は、すべて小文字からなるものです。 使用できる文字は英字とアンダースコアのみで、PHP の ext/ フォルダ配下で一意なものでなければなりません。

--proto オプションは、 作成したい PHP 関数の情報を含むヘッダファイルを指定するためのものです。 既存のライブラリを使用する拡張モジュールの開発時に使用できるということらしいですが、 最近のヘッダファイルではうまく機能しないことが多いようです。 試しに zlib.h を指定してみたところ、 ext_skel の出力に 空っぽで何の意味もないプロトタイプが大量に含まれてしまいました。 --xml と --full-xml は、まったく機能しません。--skel を使用すると、独自の雛形ファイル群を使用することができます。 このオプションは、このセクションでは対象外とします。