当前位置: 首页 > news >正文

构建自己的php扩展函数

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

上一篇 https://my.oschina.net/flyrobin/blog/1819314 介绍了基于ext_skel构建的php扩展,当时只是体验一下基本的开发流程。现在我们进一步了解扩展的开发,先从定义自己的扩展的函数开始。

1. 背景知识

php函数分为两种:一是php代码中的用户函数(zend_function.op_array结构存储),另一种是扩展内的函数(zend_function.internal_function),二者都会注册到EG(function_table)中,php在执行时会根据函数名在function_table中查找。

2. 定义函数

PHP_FUNCTION(myfunction)
{
    printf("It's my first extnsion!")
}

3. 模块中注册函数

配置zend_function_entry

const zend_function_entry firstext_functions[] = {
    PHP_FE(firstext,   NULL)
    PHP_FE_END //末尾必须加这个
};

注册到模块中

zend_module_entry firstext_module_entry = {
	STANDARD_MODULE_HEADER,
	"firstext",
	firstext_functions, //注册函数列表到模块中
	PHP_MINIT(firstext),
	PHP_MSHUTDOWN(firstext),
	PHP_RINIT(firstext),		/* Replace with NULL if there's nothing to do at request start */
	PHP_RSHUTDOWN(firstext),	/* Replace with NULL if there's nothing to do at request end */
	PHP_MINFO(firstext),
	PHP_FIRSTEXT_VERSION,
	STANDARD_MODULE_PROPERTIES
};

转载于:https://my.oschina.net/flyrobin/blog/1819422

相关文章:

  • 基于wpf的skyline三维二次开发框架
  • 高性能缓存服务器 nuster v1.8.8.2 和 v1.7.11.2 发布
  • Centos7配置网络
  • 原生js如何实现图片翻转旋转效果?
  • mtools-你可能没用过的mongodb神器
  • 代码生成器技术乱弹四,弹性万能界面
  • Python函数参数全面介绍
  • 智能指针类模板(五十)
  • TreeMap分析(下)
  • 深入响应式原理--Vue
  • 页面a标签用js或jquery模拟点击
  • python的open函数
  • ZkClient API使用
  • express + mock 让前后台并行开发
  • Android黑科技: 快速找到view所在的xml文件
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • mockjs让前端开发独立于后端
  • MQ框架的比较
  • rabbitmq延迟消息示例
  • React16时代,该用什么姿势写 React ?
  • session共享问题解决方案
  • vue-router 实现分析
  • 警报:线上事故之CountDownLatch的威力
  • 手机端车牌号码键盘的vue组件
  • 我与Jetbrains的这些年
  • 在weex里面使用chart图表
  • 做一名精致的JavaScripter 01:JavaScript简介
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (52)只出现一次的数字III
  • (70min)字节暑假实习二面(已挂)
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (七)理解angular中的module和injector,即依赖注入
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)linux 命令大全
  • .htaccess配置常用技巧
  • .java 9 找不到符号_java找不到符号
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET 常见的偏门问题
  • .Net8 Blazor 尝鲜
  • .netcore如何运行环境安装到Linux服务器
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [android] 练习PopupWindow实现对话框
  • [BUUCTF]-PWN:wustctf2020_number_game解析(补码,整数漏洞)
  • [C# WPF] 如何给控件添加边框(Border)?