ホームページ  >  記事  >  バックエンド開発  >  PHP 拡張機能の開発チュートリアル。PHP 拡張機能の開発と基礎となるアプリケーションの原則を例を通じて示します (Zephir ではなく C 言語)。

PHP 拡張機能の開発チュートリアル。PHP 拡張機能の開発と基礎となるアプリケーションの原則を例を通じて示します (Zephir ではなく C 言語)。

WBOY
WBOYオリジナル
2016-06-23 13:29:56823ブラウズ

主に C 言語を使用して PHP 拡張機能を開発しています。 現在のケースは、興味のある友人が参加して改善できることを願っています。

hello_wordphp hello word拡張widuuphp ini設定とphp ini configureの読み取りw_stringphp戻り値 https://github にログインします。 com 変更を送信します (git commit -am 'Added some feature' )
貢献しています
リポジトリ アドレス配布 http://github.com/widuu/php_ext 機能ブランチを作成します (git checkout -b my-new-feature)

変更レコードをリモート Git リポジトリ (git Push Origin my-new-feature) に送信します

  • 次に、github.com Web サイトにアクセスし、git リモート リポジトリの my-new-feature ブランチでプル リクエストを開始します
  • 以下は INI の小さな拡張コード スニペットです
  • #ifdef HAVE_CONFIG_H#include "config.h"#endif#include "php.h"#include "php_ini.h"#include "ext/standard/info.h"#include "php_widuu.h"ZEND_DECLARE_MODULE_GLOBALS(widuu)const zend_function_entry widuu_functions[] = {    PHP_FE(read_ini,    NULL)           PHP_FE_END  };zend_module_entry widuu_module_entry = {#if ZEND_MODULE_API_NO >= 20010901    STANDARD_MODULE_HEADER,#endif    "widuu",    widuu_functions,    PHP_MINIT(widuu),    PHP_MSHUTDOWN(widuu),    NULL,           NULL,           PHP_MINFO(widuu),#if ZEND_MODULE_API_NO >= 20010901    PHP_WIDUU_VERSION,#endif    STANDARD_MODULE_PROPERTIES};#ifdef COMPILE_DL_WIDUUZEND_GET_MODULE(widuu)#endifPHP_INI_BEGIN()    STD_PHP_INI_ENTRY("widuu.enable",      "1", PHP_INI_ALL, OnUpdateBool, enable, zend_widuu_globals, widuu_globals)    STD_PHP_INI_ENTRY("widuu.size",      "42", PHP_INI_ALL, OnUpdateLong, size, zend_widuu_globals, widuu_globals)    STD_PHP_INI_ENTRY("widuu.name", "widuu", PHP_INI_ALL, OnUpdateString, name, zend_widuu_globals, widuu_globals)PHP_INI_END()PHP_MINIT_FUNCTION(widuu){    REGISTER_INI_ENTRIES();    return SUCCESS;}/* }}} *//* {{{ PHP_MSHUTDOWN_FUNCTION */PHP_MSHUTDOWN_FUNCTION(widuu){    UNREGISTER_INI_ENTRIES();    return SUCCESS;}/* }}} *//* {{{ PHP_MINFO_FUNCTION */PHP_MINFO_FUNCTION(widuu){    php_info_print_table_start();    php_info_print_table_header(2, "widuu support", "enabled");    php_info_print_table_row(2 , "author", "widuu <admin@widuu.com>" );    php_info_print_table_end();    DISPLAY_INI_ENTRIES();}/* }}} */PHP_FUNCTION(read_ini){    char *str,*varname;    int str_len;    if( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "s" ,&varname,&str_len) == FAILURE){        php_error_docref(NULL TSRMLS_CC, E_WARNING, "don't exists parameter");        return;    }    str = zend_ini_string(  varname, str_len+1, 0 );    if (!str) {        RETURN_FALSE;    }    RETURN_STRING( str , 1);    // str = zend_ini_string("widuu.name", sizeof("widuu.name"), 0);    //  long maxwait = zend_ini_long("widuu.size",  sizeof("widuu.size"), 0);    // if (str == NULL) {    //  php_error_docref("widuu.size", E_WARNING, "config not exists");    // }    // printf("%s\n",str );    // printf("%d\n", maxwait );    // if (name != NULL){    //  printf("%s\n", name);    // }    // RETURN_FALSE;}
  • Function string read_ini(stringparameter);
  • echo read_ini('widuu.name');
  • 声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。