最近有个感觉, 越来越多的人开始从事PHP扩展开发的工作(越来越多的人来问问题了, 呵呵)
在这里先说声抱歉, 有的时候, 有的同学的邮件进了垃圾邮件没有办法及时回复.
为了方便大家, 我在这里罗列一些可能用到的资源.
从PHP5.3开始, zend_parse_paramters_*函数新增了如下几个新的类型描述符:
f - function or array containing php method call info (returned as zend_fcall_info and zend_fcall_info_cache) H - array or HASH_OF(object) (returned as HashTable*) L - long, limits out-of-range numbers to LONG_MAX/LONG_MIN (long) Z - the actual zval (zval**) * - variable arguments list (0 or more) + - variable arguments list (1 or more)
这也使得我们做扩展开发的时候, 能更加轻松的处理输入参数, 得到想要的值.
with 4 Commentscyj网友提到, 如果俩个PHP扩展模块之间有互相依赖关系, 那么该如何保证正确的加载顺序呢?
也就是说, 如何保证模块的依赖关系?
关于这个问题, 可以从如下俩点入手展开:
1. 扩展的加载顺序是和它出现在配置文件中的先后顺序相关的, 也就是说, 如果在配置文件中的顺序如下,
extension=mysql.so extension=pdo.so
那么, mysql扩展就会比pdo扩展先载入.
2. 那么如果顺序出错, 我们又要怎么保证正确的加载, 或者告诉Zend此时出错了呢?......
PHP取得成功的一个主要原因之一是她拥有大量的可用扩展。web开发者无论有何种需求,这种需求最有可能在PHP发行包里找到。PHP发行包包括支持各种数据库,图形文件格式,压缩,XML技术扩展在内的许多扩展。
本文就用C/C++在Unix下编写PHP扩展所需的各种知识,做一个详尽的说明....
这篇文章将会系统的介绍如何开发自己的PHP扩展, 也许你会说,网上这样的文章已经很多了,为什么还要写? 呵呵,我当然不会只是简单的重复。 这篇文章将会涉及到很多的高级技术,比如在自己的扩展中使用资源,开发一个类给脚本使用,在PHP中使用C++的对象等等,另外这篇文章还会穿插很多Zend引擎和PHP内核的知识,比如变量的实现,资源的实现,PHP4和PHP5对类的不同实现等等
with 24 Comments还是那个关于开发安全签名的PHP模块, 今天将它包装成一个PHP的CLASS,也同样,网上的资料少之甚少,于是我想将经验写一篇,关于如何在Extension Module中创建一个可以被PHP访问的对象的文章。 和大家分享。
with 11 Comments