ホームページ >バックエンド開発 >PHPチュートリアル >スタンドアロン PHP 拡張機能の作成方法_PHP チュートリアル

スタンドアロン PHP 拡張機能の作成方法_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 09:01:32882ブラウズ

スタンドアロンの PHP 拡張機能の作成方法

スタンドアロンの PHP 拡張機能は、PHP ソース コードとは独立して配布できます。このような拡張機能を作成するには、次の 2 つのものを準備する必要があります:

  • 設定ファイル(config.m4)

  • モジュールのソースコード

次に、これらのファイルを作成して結合する方法について説明します。

システムツールを準備する

拡張機能をコンパイルしてシステム上で正常に実行したい場合は、次のツールを準備する必要があります:

  • GNU 自動設定

  • GNU オートメイク

  • GNU libtool

  • GNU m4

上記は ftp://ftp.gnu.org/pub/gnu/ から入手できます。

注: これらはすべて、Unix のような環境でのみ使用できるツールです。

既存の拡張機能を変更する

スタンドアロン拡張機能を作成するのがいかに簡単かを示すために、まず PHP に既に埋め込まれている拡張機能をスタンドアロン拡張機能に変更してみましょう。 PHP をインストールし、次のコマンドを実行します:

$ mkdir /tmp/newext
$ cd /tmp/newext

これで空のディレクトリができました。ファイルを mysql 拡張ディレクトリにコピーします:

$ cp -rp php-4.0.X/ext/mysql/* .
# 注: この README は本当に更新する必要があるようです
# mysql 拡張機能は PHP7 から削除されました

ここで展開が完了しました。以下を実行してください:

$phpize

これで、このディレクトリ内のファイルをどこにでも独立して保存できるようになり、この拡張機能は完全に独立して存在できます。

ユーザーはコンパイル時に次のコマンドを使用する必要があります:

$ ./設定

[--with-php-config=/path/to/php-config]
[--with-mysql=MYSQL-DIR]
$メイクインストール

これにより、MySQL モジュールは、埋め込み MySQL クライアント ライブラリ、または MySQL ディレクトリにあるインストールされた MySQL を使用できるようになります。

注: これは、PHP 拡張機能を作成したい場合は、PHP をインストールし、PHP ソース コードのコピーをダウンロードする必要があることを意味します。

新しい拡張機能を定義する

拡張機能の例に「foobar」という名前を付けました。

新しい拡張機能には、foo.c と bar.c の 2 つのリソース ファイルといくつかのヘッダー ファイルが含まれていますが、これらは重要なだけではありません)。

拡張機能の例が外部ライブラリを参照しないことが重要です。これは、ユーザーがコンパイル オプションを指定する必要がないためです。

オプションは、リソース ファイルの名前を指定するために使用されます。リソース ファイルはいくつでも指定できます。 LTLIBRARY_SOURCES

注: 上記は Makefile.in ファイルの構成オプションです。xdebug を参照してください。

m4サフィックスの設定ファイルを変更する

m4 構成ファイルでは、いくつかの追加チェックを指定できます。スタンドアロン拡張機能の場合、マクロ呼び出しを数回行うだけで済みます。

PHP_ARG_ENABLE(foobar,foobarを有効にするかどうか,

[ --enable-foobar foobar を有効にする])

if テスト "$PHP_FOOBAR" != "いいえ" then
PHP_NEW_EXTENSION(foobar, foo.c bar.c, $ext_shared)
ふぃ

共有モードで起動します。 PHP_ARG_ENABLE 会自动设置好正确的变量以保证扩展能够被 PHP_NEW_EXTENSION

セット。 PHP_NEW_EXTENSION 的第一个参数是扩展的名称,第二个参数是资源文件。第三个参数 $ext_shared 是由 PHP_ARG_ENABLE/WITHPHP_NEW_EXTENSION

設定には必ず

を使用してください。 PHP モジュールを公開する予定がない場合でも、これらの設定により、モジュールのメイン PHP モジュールとのインターフェイスの一貫性が保たれます。 PHP_ARG_ENABLEPHP_ARG_WITH

注: 同じです。 PHP_ARG_ENABLEPHP_ARG_WITH 应该是用于定义模块是动态扩展还是静态编译进 PHP 中,就跟编译 PHP 时使用的 --enable-xxx--with-xxx

リソースファイルを作成する

PHP モジュールの汎用コードを作成したり、基本的な関数定義や関数パラメーターを処理する C コードを作成したりすることもできます。具体的な情報は READNE.EXT_SKEL にあります。 ext_skel

例がないことを心配する必要はありません。PHP には参照用のモジュールが多数あります。簡単な開始点を選択して、独自のコードを追加してください。

注: 基本モジュールに必要なリソース ファイルと設定ファイルは生成でき、自分で作成する必要はありません。 ext_skel

カスタムモジュールを変更する

config.m4 ファイルとリソース ファイルを同じディレクトリに配置して実行します phpize PHP 4.0 以降には、PHP のコンパイル時に phpize がインストールされています)。

phpize がシステム環境変数にない場合は、次のように絶対パスを指定する必要があります:

$ /php/bin/phpize

このコマンドは、必要なビルド ファイルを現在のディレクトリに自動的にコピーし、config.m4 に基づいて構成ファイルを作成します。

上記の手順を完了すると、すでに独立した拡張機能が作成されています。

拡張機能をインストール

拡張機能は次のコマンドでコンパイルしてインストールできます:

$ ./設定
[--with-php-config=/path/to/php-config]
$メイクインストール

モジュールに共有サポートを追加します

場合によっては、他のモジュールをロードするために独立した拡張機能を共有する必要があります。次に、作成済みの foo モジュールに共有サポートを追加する方法を説明します。

#ifdef COMPILE_DL_FOO
ZEND_GET_MODULE(フー)
#endif

この段落は上でも触れましたが、ここでもう一度強調しておきます。

PECLウェブサイト規約

PECL に拡張して Web サイトを公開する予定がある場合は、考慮すべき点がいくつかあります:

#define PHP_FOO_VERSION "1.2.3"

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1089382.html技術記事スタンドアロン PHP 拡張機能の作成方法 スタンドアロン PHP 拡張機能は、PHP ソース コードとは独立して配布できます。このような拡張機能を作成するには、次の 2 つのものを準備する必要があります: 設定ファイル...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。