ホームページ > バックエンド開発 > PHPチュートリアル > PHP7 拡張機能開発 こんにちは

PHP7 拡張機能開発 こんにちは

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-20 12:39:39
オリジナル
744 人が閲覧しました

この記事は PHP7 に基づいており、PHP 拡張機能を最初から作成する方法を説明します。この記事では主に拡張機能を作成する基本的な手順を説明します。この例では、次の関数を実装します。

<?phpecho say();?>
ログイン後にコピー

出力コンテンツ:

$ php ./test.php$ hello word
ログイン後にコピー

say メソッドを呼び出した後、hello word が実行されます。出力される。

ステップ 1: コードの生成

PHP は、基本的なコードを生成するためのツール ext_skel を提供します。このツールは、PHP ソース コードの ./ext ディレクトリにあります。

$ cd php_src/ext/$ ./ext_skel --extname=say
ログイン後にコピー

extname パラメーターの値は拡張機能の名前です。 ext_skelコマンドを実行すると、カレントディレクトリに同じ拡張子のディレクトリが生成されます。

2 番目のステップは、config.m4 構成ファイルを変更することです。

config.m4 の機能は、phpize ツールと連携して構成ファイルを生成することです。構成ファイルは環境の検出に使用されます。拡張機能のコンパイルと実行に必要な環境が満たされているかどうかを確認してください。次に、config.m4 ファイルの変更を開始します。

$ cd ./say$ vim ./config.m4
ログイン後にコピー

config.m4 ファイルを開くと、この段落が表示されます。

dnl If your extension references something external, use with:    dnl PHP_ARG_WITH(say, for say support, dnl Make sure that the comment is aligned: dnl [  --with-say             Include say support])  dnl Otherwise use enable:  dnl PHP_ARG_ENABLE(say, whether to enable say support, dnl Make sure that the comment is aligned: dnl [  --enable-say           Enable say support])
ログイン後にコピー

ここで、dnl はコメント記号です。上記のコードは、作成した拡張機能が他の拡張機能または lib ライブラリに依存している場合、PHP_ARG_WITH 関連コードのコメントを削除する必要があることを示しています。それ以外の場合は、PHP_ARG_ENABLE 関連のコード セクションのコメントを解除します。私たちが作成する拡張機能は、他の拡張機能や lib ライブラリに依存する必要はありません。したがって、PHP_ARG_ENABLE の前のコメントを削除します。コメントを削除した後のコードは次のとおりです。

dnl If your extension references something external, use with:    dnl PHP_ARG_WITH(say, for say support, dnl Make sure that the comment is aligned: dnl [  --with-say             Include say support])  dnl Otherwise use enable:  PHP_ARG_ENABLE(say, whether to enable say support, Make sure that the comment is aligned: [  --enable-say           Enable say support])
ログイン後にコピー

3 番目のステップは、コード

を実装して、say.c ファイルを変更することです。 Say メソッドを実装します。 PHP_FUNCTION(confirm_say_compiled) を見つけて、その上に次のコードを追加します。

PHP_FUNCTION(confirm_say_compiled){        zend_string *strg;        strg = strpprintf(0, "hello word");        RETURN_STR(strg);}
ログイン後にコピー

PHP_FE(confirm_say_compiled) を見つけて、その上に次のコードを追加します。

PHP_FE(say, NULL)
ログイン後にコピー

変更されたコードは次のとおりです。 :

const zend_function_entry say_functions[] = {     PHP_FE(say, NULL)       /* For testing, remove later. */     PHP_FE(confirm_say_compiled,    NULL)       /* For testing, remove later. */     PHP_FE_END  /* Must be the last line in say_functions[] */ }; /* }}} */
ログイン後にコピー

4 番目のステップ、コンパイルとインストール

拡張機能をコンパイルする手順は次のとおりです:

$ phpize$ ./configure$ make && make install
ログイン後にコピー

php.ini ファイルを変更して追加します。次のコード:

[say]extension = say.so
ログイン後にコピー

次に、php -m コマンドを実行します。出力には、

という単語が表示されます。5 番目のステップは、テスト

自分でスクリプトを作成し、say メソッドを呼び出します。出力内容が期待どおりかどうかを確認します。

完全なコードのダウンロード

元のリンク: PHP7 拡張機能の開発には注意してください。

関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート