拡張モジュールを構成するファイル群

手作業で作ったか ext_skel を使用したか、 あるいは » CodeGen のようなツールを用いたのかにかかわらず、 すべての拡張モジュールには少なくとも次の 4 つのファイルが含まれます。

config.m4

UNIX ビルドシステムの設定ファイル (UNIX 用のビルドシステム: config.m4 を参照ください)。

config.w32

Windows ビルドシステムの設定ファイル (Windows 用のビルドシステム: config.w32 を参照ください)。

php_counter.h

拡張モジュールを PHP バイナリに静的モジュールとして組み込む場合は、 php_ の後に拡張モジュールの名前を続けたヘッダファイルに その拡張モジュールの構造についての宣言があるものとします。 通常は、このファイルに記述するのは、 マクロやプロトタイプ宣言、グローバル変数といった他のヘッダと同じ内容です。

counter.c

拡張モジュールのソースファイル。 規約上は拡張モジュールの名前と同じ名前にすることになっていますが、 これは必須ではありません。このファイルに含まれる内容は、 モジュールの構造体定義や INI エントリ、 管理用関数、ユーザーに公開する関数、その他拡張モジュールに必要となるものです。

ビルドシステム関連のファイルについては別の場所で説明することにして、 ここでは残りのファイルについて取り上げます。 これらの 4 つのファイルはあくまでも必要最小限のものであり、 実際にはこれら以外にもさまざまなヘッダファイルやソースファイル、 ユニットテストなどのファイルが含まれることになるでしょう。 counter 拡張モジュールのファイル一覧は、このようになります。

例1 counter 拡張モジュールのファイル一覧 (順不同)

ext/
 counter/
  .svnignore
  config.m4
  config.w32
  counter_util.h
  counter_util.c
  php_counter.h
  counter.c
  package.xml
  CREDITS
  tests/
   critical_function_001.phpt
   critical_function_002.phpt
   optional_function_001.phpt
   optional_function_002.phpt

ソース以外のファイル

作成した拡張モジュールを PHP の Subversion リポジトリ (通常は » PECL) にチェックインする際には、 .svnignore というファイルを使用します。 ext_skel が作成するこのファイルの雛形は、 次のようになります。

.deps
*.lo
*.la

これは、PHP のビルドシステムが作成する中間ファイルを無視するよう Subversion に指示するためのものです。 単に利便性のためだけに存在するものであり、 省略しても悪影響はありません。

CREDITS ファイルには、 その拡張モジュールの開発に協力してくれた人たちやメンテナの情報を プレーンテキストで記述します。このファイルの主要な目的は、 バンドルされている拡張モジュールが phpcredits() で使用する情報を作成することにあります。 このファイルの最初の行には拡張モジュールの名前、 そしてその次の行には協力者をカンマ区切りで指定します。 協力者の一覧は、通常は開発に参加した順に並べます。 » PECL パッケージでは、これらの情報はすでに package.xml などで管理されています。 ですので、このファイルを省略しても特に問題はありません。

package.xml ファイルは、» PECL 拡張モジュールに特有のものです。これはメタ情報ファイルであり、 その拡張モジュールの依存性や作者、インストール要件などの情報を含みます。 拡張モジュールを » PECL で公開するつもりがないのであれば、 このファイルは不要です。