php扩展c语言开发,PHP扩展开发教程,通过实例来展示PHP的扩展开发和底层应用原理(C语言非zephir)...

主要是使用C语言来开发PHP扩展,现在的案例正在一步一步完善中,希望有兴趣的朋友一起来加入和完善,现在已经完成的案例如下:

Dicretory

Explain

php hello word extension

php ini settings and read php ini configure

php returning values

Contributing

创建您的特性分支 (git checkout -b my-new-feature)

提交您的改动 (git commit -am 'Added some feature')

将您的改动记录提交到远程 git 仓库 (git push origin my-new-feature)

然后到 github.com 网站的该 git 远程仓库的 my-new-feature 分支下发起 Pull Request

下边是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_WIDUU

ZEND_GET_MODULE(widuu)

#endif

PHP_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 " );

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;

}

函数 string read_ini(string parameter);

echo read_ini('widuu.name');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值