ホームページ > バックエンド開発 > PHPチュートリアル > PHP 拡張機能開発入門 3>パラメータ付き関数

PHP 拡張機能開発入門 3>パラメータ付き関数

WBOY
リリース: 2016-06-20 12:29:16
オリジナル
1028 人が閲覧しました

メモを取ることはコーディングと同じくらいカジュアルであることがわかりました。その後、さらにコードやブログを読みました。カジュアルすぎるため、高品質のコードを作成したり、わかりやすいメモを書いたりすることが困難であることがわかりました。

メモを取ることは知識を整理するプロセスであり、知識への精通度を表現できます。

今日は、PHP 拡張機能でパラメーターを受け取る方法を記録するコードを書きます。

拡張機能の作り方など基本的なことはここでは説明しません。 パラメータを受け取る関数の書き方は関数部分を修正するだけです。 。昨日書いた関数部分は以下の通りです。

 /*   这里是功能 这个函数不接收参数,只有返回值。 */ PHP_FUNCTION(helloworld){             int  len;    char *strg;          len = spprintf(&strg, 0, "%.78s", "helloworld");    RETURN_STRINGL(strg, len, 0);}
ログイン後にコピー

ここでは、受け取ったパラメータを計算して a+b の値を計算します。最初にパラメータを受け取るには、メソッド

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &a, &b) == FAILURE) {        return;    }
ログイン後にコピー

に次のコードを追加する必要があります。ここでパラメータを受け取るには、次のことを知っておく必要があります。ここで整数を受け取る場合は、「l」を記述する必要があります。 2 つ受け取った場合は、「ll」を 2 つ書き込み、受け取ったパラメータを 1 つ書き込んだ後、指定した変数アドレスに値を代入します。パラメータが 2 つなら 2 つ、3 つなら、値を書き込みます。一度に 3 つずつ書きます。文字列やその他のパラメータについては、同じ手順に戻ります。

b   Booleanl   Integer 整型d   Floating point 浮点型s   String 字符串r   Resource 资源a   Array 数组o   Object instance 对象O   Object instance of a specified type 特定类型的对象z   Non-specific zval 任意类型~Z   zval**类型f   表示函数、方法名称,PHP5.1里貌似木有... .
ログイン後にコピー

改造コードは以下の通りです

 /*   这里是功能 这个函数不接收参数,只有返回值。 */ PHP_FUNCTION(helloworld){    int a;    int b;    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &a, &b) == FAILURE) {        return;    }          int c;    c=a+b;    RETURN_LONG(c);}
ログイン後にコピー

以上で加算計算関数が完成します。次にコンパイルして起動します。次に、PHP コードで次のように呼び出します:

<?php    echo helloworld(1,3);
ログイン後にコピー

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