ホームページ >バックエンド開発 >PHPチュートリアル >PHP 拡張機能の開発に関する詳細なチュートリアル
場合によっては、PHP 拡張機能を開発する必要があります。
1. PHP 自体がアクセスできないリソースまたは呼び出し、
2. 拡張機能を通じてパフォーマンスと効率を実現できます。 >3. C で実装する方がよいでしょう
4. ビジネスまたはコード保護を考慮して、
コードをカプセル化します5. PHP について理解するには、ここから始めてください
ccvita_string という関数を提供する拡張機能があるとします。以下は、そのような PHP 拡張機能の作成方法の詳細な紹介です:
ステップ 1、コードを生成します
PHP は、便宜上、コード ジェネレーターのようなコード ジェネレーターを提供します。拡張機能開発ツール ext_skel の詳細については、説明を参照してください。string scutephp_string(string str)
cd usr/src/php-5.3.8/ext/<br />./ext_skel --extname=scutephp --proto=scutephp.skel<br />cd scutephp/
2 番目のステップは、構成
を変更してから、config.m4 ファイルを変更して 3 行 10、11、12 の最初の dnl を削除します。つまり、dnl PHP_ARG_WITH(ccvita, for ccvita support,<br />dnl Make sure that the comment is aligned:<br />dnl [ --with-scutephp Include scutephp support])
PHP_ARG_WITH(scutephp, for scutephp support,<br />Make sure that the comment is aligned:<br />[ --with-scutephp Include scutephp support])
に変更されます。 3 番目のステップは、関数
を実装することです。ソース コードを変更します。 scutephp.c ファイルPHP_FUNCTION(scutephp_string)<br />{<br /> char *str = NULL;<br /> int argc = ZEND_NUM_ARGS();<br /> int str_len;<br /> char *result;<br /><br /> if (zend_parse_parameters(argc TSRMLS_CC, "s", &str, &str_len) == FAILURE) <br /> return;<br /><br /> str_len = spprintf(&result, 0, "<a href="%.78s">Link</a>", str);<br /> RETURN_STRINGL(result, str_len, 0); <br />}
ステップ 4. 拡張機能をコンパイルします
保存後、コンパイルを開始します/usr/local/php/bin/phpize<br />./configure --with-php-config=/usr/local/php/bin/php-config<br />make
ステップ 5、拡張機能を追加します
この時点で、すべてがうまくいけば、拡張機能はすでに modules/scutephp.so にあります。以下は、この拡張機能を PHP に追加して、PHP プログラムが呼び出せるようにします。cp modules/scutephp.so /usr/local/php/ext/<br />vim /usr/local/php/etc/php.ini<br />extension=/usr/local/php/ext/scutephp.so #在php.ini文件最后增加这一行<br />service php-fpm restart #重启PHP服务<br />cp ccvita.php /data/www/wwwroot/default/
次に、scutephp.php ファイルにアクセスして拡張機能をテストできます。