ホームページ > バックエンド開発 > PHPチュートリアル > PHP 拡張機能開発 01: 最初の拡張機能

PHP 拡張機能開発 01: 最初の拡張機能

WBOY
リリース: 2016-07-29 08:58:55
オリジナル
1026 人が閲覧しました

まず、ビジネス シナリオでは、ccvita_string という関数を提供するためにこのような拡張機能が必要であると仮定します。その主な機能は、文字のピリオドを返すことです。 (このビジネス シナリオはあまりにも偽物です。ちょっと見てください) 対応する PHP コードは次のようになります:

<span>function</span> ccvita_string(<span>$str</span><span>){
     </span><span>$result</span> = '<a href="'.<span>$str</span>.'">Link</a>'<span>;
     </span><span>return</span><span>$result</span><span>;
}</span>
ログイン後にコピー

最初のステップはコードを生成することです
PHP は便宜上、コード ジェネレーターのようなコード ジェネレーターを提供しています。拡張開発ツール ext_skel の詳細については説明を参照してください。
まず、ファイル ccvita.skel を作成します。その内容は

<span>string</span> ccvita_string(<span>string</span> str)
ログイン後にコピー

で、実行したい拡張機能に ccvita_string という関数があることを ext_skel に伝えます。そして

cd MooENV/src/php-<span>5.3</span>.<span>8</span>/ext/<span>.</span>/ext_skel --extname=ccvita --proto=<span>ccvita.skel
cd ccvita</span>/
ログイン後にコピー

を実行すると、ccvitaの拡張コードフレームワークが出てきました。

2 番目のステップは構成を変更することです
次に config.m4 ファイルを変更して 3 行 10、11、12 の最初の dnl を削除します。つまり、

dnl PHP_ARG_WITH(ccvita, for ccvita support,<span>dnl Make sure that the comment is aligned:
dnl </span><span>[</span><span>  --with-ccvita             Include ccvita support</span><span>]</span>)
ログイン後にコピー

PHP_ARG_WITH(ccvita, for ccvita support,<span>Make sure that the comment is aligned:
</span><span>[</span><span>  --with-ccvita             Include ccvita support</span><span>]</span>)
ログイン後にコピー

に変更します。ステップは、関数を実装することです
ソース コード ccvita.c ファイルを変更します
ccvita_string 関数を見つけて変更します

<span>PHP_FUNCTION(ccvita_string)
{
    </span><span>char</span> *str =<span> NULL;
    </span><span>int</span> argc =<span> ZEND_NUM_ARGS();
    </span><span>int</span><span> str_len;
    </span><span>char</span> *<span>result;
 
    </span><span>if</span> (zend_parse_parameters(argc TSRMLS_CC, <span>"</span><span>s</span><span>"</span>, &str, &str_len) ==<span> FAILURE) 
        </span><span>return</span><span>;
 
    str_len </span>= spprintf(&result, <span>0</span>, <span>"</span><span><a href=\"%.78s\">Link</a></span><span>"</span><span>, str);
    RETURN_STRINGL(result, str_len, </span><span>0</span><span>); 
}</span>
ログイン後にコピー

4 番目のステップ、拡張機能をコンパイルします
保存後、コンパイルを開始します

/usr/local/php/bin/<span>phpize
.</span>/configure --with-php-c/local/php/bin/php-<span>config
</span><span>make</span>
ログイン後にコピー

5 番目のステップ、拡張機能を追加します
この時点で、すべてがうまくいけば、拡張機能はすでに modules/ccvita.so にあります。以下は、この拡張機能を PHP に追加して、PHP プログラムが呼び出せるようにします。

<span>cp</span> modules/ccvita.so /usr/local/php/ext/<span>vim </span>/usr/local/php/etc/<span>php.ini
extension</span>=/usr/local/php/ext/<span>ccvita.so #在php.ini文件最后增加这一行
service php</span>-<span>fpm restart #重启PHP服务
</span><span>cp</span> ccvita.php /data/www/wwwroot/default/
ログイン後にコピー

関連するコードは私の github で複製できます。アドレス: https://github.com/KimiChen/PHP-EXTその後、ccvita.php ファイルにアクセスして拡張機能をテストできます。次の記事では、さらに詳しい内容について説明します。

ブログ(http://www.ccvita.com/496.html)より転載

以上、PHP 拡張機能の開発 01: 最初の拡張機能について内容を含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。

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