zendAPI 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
zendAPI 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
zendAPI 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
zendAPI 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
zendAPI 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

该项目是对 Zend Engine 的 C 接口使用 C++11 进行而面向对象的封装,从而屏蔽了底层 Zend Engine API 的接口复杂性,加快开发 PHP 扩展的效率。

项目官网地址:www.zendapi.org

设计目标

让 PHP 扩展开发更有趣

你是否在开发扩展的时候遇到想使用PHP的一个接口,但是就是苦于不知道在哪里定义,就算找到了在哪里定义看到的定义是否让你抓狂,各种指针,各种宏定义 让你的生活变得不美好,哈哈,是时候尝试 zendAPI 啦,我们让你无忧无虑的调用底层的 Zend Engine API, 安装语义对一维的 C API 进行二次组织,精心的 设计每一个接口,并且提供关于接口的详细文档与使用范例,还等什么,赶快到碗里来吧。

特性

  1. 完全面向对象,对 Zend Engine API 进行二次定义

  2. 使用现代的 C++11 语法进行开发,便于维护

  3. 最大化屏蔽 PHP 版本对扩展开发的影响,zendAPI 将对 Zend Engine API 不同版本带来的差异屏蔽掉

  4. 高覆盖的单元测试,保证代码质量

  5. 在封装的时候,尽最大能力保证性能

文档相关

用户手册: www.zendapi.org/manual
API手册: www.zendapi.org/api

说明

当前 zendAPI 项目处于非常前期阶段,很多接口都不稳定,甚至会经常有大的变化,请不要用于实际项目,现阶段只适合学习用途。 项目参考

  1. PHP-CPP 进行实现,大家要是对PHP-CPP感兴趣,请点击 https://github.com/CopernicaMarketingSoftware/PHP-CPP

  2. Qt project 在底层数据结构的接口上借鉴Qt core相关设计,如果您对 Qt 感兴趣,请点击:http://doc.qt.io/

声明:
zendAPI 项目第一版中有些部分跟 PHP-CPP 将会高度一样,文件头也会加上 PHP-CPP 信息,一旦完成后 项目将会独立发展,当然适当的时机 我也会将代码反馈给 PHP-CPP 项目。

简单入门

项目环境要求

暂时只支持 linux 服务器环境,PHP 版本7.0以上,标准 C++11 编译器, cmake 3.5.0以上版本

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (6)

加载中
打分: 力荐
为zend点个赞,开源,使用C++11,还不错。
2017/10/17 15:54
回复
举报
一些封装wrapper,对工程师更友好一些
2017/09/09 19:12
回复
举报
Swoole也有一个支持C++开发PHP扩展的项目叫PHP-X.不过Swoole仍然是用C开发.
2017/09/09 17:18
回复
举报
zendapi软件作者
打分: 力荐
接口做了更人性化的考虑
2017/09/09 14:14
回复
举报
和PHP-CPP有什么不一样?
2017/09/09 14:10
回复
举报
这个和phpx有啥区别
2017/09/09 11:03
回复
举报
更多评论
暂无内容
发表了博客
2013/08/09 14:58

php ZEND_API

//configure.in文件 AH_TOP([ #if defined(__GNUC__) && __GNUC__ >= 4 # define ZEND_API __attribute__ ((visibility("default"))) # define ZEND_DLEXPORT __attribute__ ((visibility("default"))) #else # define ZEND_API # define ZEND_DLEXPORT #endif #define ZEND_DLIMPORT #undef uint #undef ulong /* Define if you want to enable memory limit support */ #define MEMORY_LIMIT 0 ]) //Zend\zend_config.w32.h #...

0
0
2019/04/28 09:49

polarphp 0.0.1 alpha 发布:全新 PHP 运行时环境

polarphp 项目介绍 polarphp 是一个全新的 PHP 语言的运行时环境,基于目前最新的 zend virtual machine 进行打造,支持最新的语言规范,同时提供了自己的运行时标准库 (libpdk)。 简单来说 polarphp 之于 PHP 语言的关系跟 NodeJS 之于 Javascript 语言一样,NodeJS 在 v8 引擎基础之上进行打造,为 Javascript 提供了一个在服务端运行的环境。同样 polarphp 也在 zend engine 的基础上进行打造,实现了一个除 Web 开发之外的一...

0
0
发表于软件架构专区
2017/11/10 09:52

使用5种编程语言开发PHP扩展

1. 使用C语言开发 介绍参考链接:http://blog.csdn.net/heiyeshuwu/article/details/44267021 https://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/ 2. 使用C++语言开发 介绍参考链接:https://github.com/Qihoo360/zendAPI http://blog.sina.com.cn/s/blog_532f78a40100qqnr.html 3. 使用Zephir语言开发 介绍参考链接:https://zephir-lang.com/ https://segmentfault.com/a/119000000281260...

0
1
发表了博客
2020/05/15 07:44

[php-src] Php扩展开发的琐碎注意点、细节

内容均以php-5.6.14为例. 函数中接收的字符串参数长度不包含结尾的0,在 zend_update_property 中,长度的参数是 int len,一般都使用 ZEND_STRL(NAME)自动填充字符串和长度,它的长度实现是 sizeof(NAME) - 1,它也不需要结尾的0; #undef MIN #undef MAX #define MAX(a, b) (((a)>(b))?(a):(b)) #define MIN(a, b) (((a)<(b))?(a):(b)) #define ZEND_STRL(str) (str), (sizeof(str)-1) #define ZEND_STRS(str) (...

0
0
发表了博客
2013/10/17 17:32

php扩展开发-数组处理(二)

上篇文章主要介绍了一维数组的处理方法,使用ZEND API结合递归算法遍历处理多维数组也不是什么难事。处理多维数组首先要了解一下ZEND API: MAKE_STD_ZVAL();//注册zval变量 SEPARATE_ZVAL_IF_NOT_REF()//如果没有分支则分离变量 add_assoc_string_ex//添加字符串数组元素 现需要开发一个PHP扩展,将多维数组元素url编码然后返回。修改mytools.c文件,添加函数(流程请参照上篇文章:php扩展开发-数组处理(一),这里不再赘述)...

3
2
发表了博客
2018/04/23 21:10

PHP内核之旅-1.生命周期

PHP 内核之旅系列 PHP内核之旅-1.生命周期 PHP内核之旅-2.SAPI中的Cli PHP内核之旅-3.变量 PHP内核之旅-4.字符串 PHP内核之旅-5.强大的数组 PHP内核之旅-6.垃圾回收机制 1.SAPI接口 PHP具体应用的编程接口。 2.开始和结束   PHP开始执行以后会经过两个主要的阶段:     处理请求之前的开始阶段和请求之后的结束阶段。       1.1开始阶段:         1.1.1 模块初始化阶段(MINT),只进行一次。       ...

0
0
发表了博客
2018/04/23 21:10

PHP内核之旅-1.生命周期

PHP 内核之旅系列 PHP内核之旅-1.生命周期 PHP内核之旅-2.SAPI中的Cli PHP内核之旅-3.变量 PHP内核之旅-4.字符串 PHP内核之旅-5.强大的数组 PHP内核之旅-6.垃圾回收机制 1.SAPI接口 PHP具体应用的编程接口。 2.开始和结束   PHP开始执行以后会经过两个主要的阶段:     处理请求之前的开始阶段和请求之后的结束阶段。       1.1开始阶段:         1.1.1 模块初始化阶段(MINT),只进行一次。       ...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
6 评论
56 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部