PHP 5.6 バージョンで PHP 拡張機能を作成する簡単な例、5.6 example_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:09:26
オリジナル
817 人が閲覧しました

PHP 5.6 バージョンで PHP 拡張機能を作成する簡単な例、5.6 の例

PHP 自体にニーズを満たす API がない場合、対応する拡張機能を自分で作成する必要がある場合があります。拡張機能を作成してコンパイルした後、それを独自の開発環境に追加して PHP の機能を拡張できます。

これは、文字列と整数を接続する接続操作の簡単な拡張です。

まず、最新の PHP ソース コード インストール パッケージをダウンロードし、ext/ ディレクトリに入り、新しい extstrcat.def を作成します。

コードをコピーします コードは次のとおりです:
文字列 extstrcat(文字列 strarg, int intarg)

次に、次を実行します:

コードをコピーします コードは次のとおりです:
./ext_skel --extname=extstrcat --proto=extstrcat.def

ext/extstrcat/config.m4 を変更し、次の行の前にあるコメント (dnl) を削除します:

コードをコピーします コードは次のとおりです:
PHP_ARG_ENABLE(extstrcat, extstrcat サポートを有効にするかどうか,
コメントが揃っていることを確認してください:
[ --enable-extstrcat extstrcat サポートを有効にする])

この時点で、ext/extstrcat/extstrcat.c を編集し、PHP_FUNCTION(extstrcat) 関数を見つけます。これは、拡張機能内のメソッドが次のように実装されることを意味します。


コードをコピーします コードは次のとおりです:
PHP_FUNCTION(extstrcat)
{
char *strarg = NULL;
int argc = ZEND_NUM_ARGS();
int strarg_len;
長い整数;

char intargstr[10];
int retstrlen = 0;
char *retstr = NULL;

If (zend_parse_parameters(argc TSRMLS_CC, "sl", &strarg, &strarg_len, &intarg) == 失敗)
戻る;

snprintf(intargstr, 9, "%d", intarg);
retstrlen = strarg_len + strlen(intargstr) + 1;
retstr = (char *)malloc(sizeof(char)* retstrlen);
Memset(retstr, ' strncat(retstr, strarg, strlen(strarg));
strncat(retstr, intargstr, strlen(intargstr));
RETURN_STRING(retstr, 1);

php_error(E_WARNING, "extstract: まだ実装されていません");
}



、ここで、 strarg と intarg は、対応する 2 つの文字列パラメーターと整数パラメーターです。
次に行うことは、拡張機能をコンパイルすることです



コードをコピーします

コードは次のとおりです: ぴぴせ
./configure --enable-extstrcat
作る


コンパイルが成功すると、extstrcat.so ファイルが ext/modules ディレクトリに生成されます

コードをコピーします

コードは次のとおりです: cp ./modules/extstrcat.so /usr/local/lib/php/extensions/no-debug-non-zts-20121212/


php.iniを変更し、extension = extstrcat.soを追加します。
php-fpm を再起動し、phpinfo() を実行して、extstrcat 拡張機能が追加されたことを確認します。 それでは、デモを作成して php 拡張機能をテストしてみましょう




コードをコピーします

コードは次のとおりです: if(!extension_loaded('extstrcat')) {
dl('extstrcat.' .PHP_SHLIB_SUFFIX);
}
$ret=extstrcat('testarg',1234);
エコー $ret;
?>

、コマンドラインでファイルを実行し、testarg1234 を取得します。

http://www.bkjia.com/PHPjc/945720.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/945720.html技術記事 PHP バージョン 5.6 で PHP 拡張機能を作成する簡単な例 例 5.6 PHP 自体にニーズを満たす API がない場合、拡張機能を作成した後に対応する拡張機能を自分で作成する必要がある場合があります...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート