首页 >后端开发 >PHP问题 > 正文

PHP怎么初始化拓展?

原创2020-07-01 17:21:370960
第12期线上培训班

PHP初始化拓展的方法:首先修改【php_hello.h】中靠近用户空间函数的原型声明;然后修改【hello.c】文件;接着在文件【hello.c】顶部增加一个【#include】;最后修改【hello_world】使用INI的值即可。

PHP初始化拓展的方法:

通过php.ini初始化扩展的配置


Zend引擎提供了两种管理ini值的途径。

假设你要在php.ini中为你的扩展定义一个值,hello.greeting,它保存将在hell_world()函数中用到的问候字符串。你需要向hello.cphp_hello.h中增加一些代码,同时对hell_module_entry结构作一些关键性的改变。

相关学习推荐:PHP编程从入门到精通

1、第一步:修改php_hello.h中靠近用户空间函数的原型声明

 PHP_MINIT_FUNCTION(hello);
PHP_MSHUTDOWN_FUNCTION(hello);// 初始化关键点
PHP_FUNCTION(hello_world);// 其它通用
PHP_FUNCTION(hello_long);

2、第二步:修改hello.c文件

去掉当前版本中的 hello_module_entry 用下面的列表替换它:

zend_module_entry hello_module_entry = {
     #if ZEND_MODULE_API_NO >= 20010901
          STRANDARD_MODULE_HEADER,
     #endif
          PHP_HELLO_WORLD_EXTENAME,
          hello_functions,
          PHP_MINIT(hello),
          PHP_MSHUTDOWN(hello),
          NULL,NULL,NULL,
     #if ZEND_MODULE_API_NO >= 20010901
          PHP_HELLO_WORLD_VERSION,
     #endif
          STANDARD_MODULE_PROERTIES
}
 
PHP_INI_BEGIN()
PHP_INI_ENTRY("hello.greeting","hello world",PHP_INI_ALL,NULL)
PHP_INI_END()
 
PHP_MINIT_FUNCTION(hello)
{
     REGISTER_INI_ENTRIES();
     return SUCCESS;
}
 
PHP_MSHUTDOWN_FUNCTION(hello)
{
     UNREGISTER_INI_ENTRIES();
     return SUCCESS;
}

3、现在,你只需要在文件hello.c顶部的那些#include旁边增加一个#include,这样可以活动正确的支持INI的头文件:

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "php.h"
#include "php_ini.h"
#include "php_hello.h"

4、最后,你可以修改hello_world让它使用INI的值:

PHP_FUNCTION(hello_world)
{
     RETURN_STRING(INI_STR("hello.greeting"),1);
}

但是:你将要拷贝从INI_STR()返回的值。这是因为,在进入PHP变量堆栈之前,它都是个静态字符串。实际上,如果你试图修改这个返回的字符串,PHP执行环境会变得不稳定,甚至崩溃。

总结:

  • 其实就是使用 INI_STR()获取hello.greeting 条目的当前字符串。

  • 如果要获取其它的参数,可以使用类似 INI_INT等,由于设置参数不一样可能导致,ini_set之类的函数不好用。

以上就是PHP怎么初始化拓展?的详细内容,更多请关注php中文网其它相关文章!

php中文网最新课程二维码
  • 相关标签:PHP 初始化
  • 本文原创发布php中文网,转载请注明出处,感谢您的尊重!
  • 相关文章

    相关视频


    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
  • 专题推荐

    推荐视频教程
  • PHP技术小知识每日分享(精品)PHP技术小知识每日分享(精品)
  • php全栈开发之小博客大智慧php全栈开发之小博客大智慧
  • PHP数据库编程零基础入门到精通PHP数据库编程零基础入门到精通
  • php7实战开发cms内容管理系统php7实战开发cms内容管理系统
  • 视频教程分类