![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PHP
文章平均质量分 50
iteye_18420
这个作者很懒,什么都没留下…
展开
-
PHP编译选项--with和--enable的说明
也许有人会问,为什么有的扩展的开启方式是 --enable-extname的形式,有的则是--with-extname的形式呢?其实两者并没有什么本质的不同,只不过enable多代表不依赖外部库便可以直接编译,而with大多需要依赖于第三方的lib。 现在,我们的扩展并不需要依赖其它的库文件,所以我们直接使用--enable便可以了。...原创 2015-11-22 17:51:15 · 1474 阅读 · 0 评论 -
PHP中的魔术方法
From: http://duanshaozhen.iteye.com/常用的魔术方法有:__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __s...原创 2014-11-19 20:48:35 · 63 阅读 · 0 评论 -
PHP插件更新对象与类属性的方法
更新对象与类的属性ZEND_API void zend_update_property_null(zend_class_entry *scope, zval *object, char *name, int name_length TSRMLS_DC);ZEND_API void zend_update_property_bool(zend_class_entry *scope, zval...原创 2015-11-29 15:06:11 · 190 阅读 · 0 评论 -
PHP插件定义类和接口
From: http://duanshaozhen.iteye.com/插件中所谓php的接口,是通过定义类的虚函数实现的。定义一个接口还是很方便的,我先给出一个PHP语言中的形式。原创 2015-11-29 11:21:29 · 207 阅读 · 0 评论 -
PHP插件为类定义常量
为类定义常量这个内容比较简单,只涉及到一组函数,可以查看Zend/zend_API.hZEND_API int zend_declare_class_constant(zend_class_entry *ce, const char *name, size_t name_length, zval *value TSRMLS_DC);ZEND_API int zend_declare_c...原创 2015-11-29 11:15:16 · 92 阅读 · 0 评论 -
PHP扩展之资源的使用
先描述下{资源}类型在内核中的结构://每一个资源都是通过它来实现的。typedef struct _zend_rsrc_list_entry{ void *ptr; int type; int refcount;}zend_rsrc_list_entry;在真实世界中,我们经常需要操作一些不好用标量值表现的数据,比如某个文件的句柄,而对于C来说,...原创 2015-11-29 10:16:56 · 422 阅读 · 0 评论 -
编写PHP扩展函数的参数类型绑定
我们看一下如何通过其实现类型绑定,但这个特性只能在Zend Engine 2也就是PHP5中使用。 让我们再回顾一下ZE2's argument info结构。每一个arg info结构的声明都是通过ZEND_BEGIN_ARG_INFO()或者ZEND_BEGIN_ARG_INFO_EX()宏函数开始的,然后紧跟着几行ZEND_ARG_*INFO()宏函数,最终以ZEND_END_ARG_INF...原创 2015-11-23 07:17:37 · 157 阅读 · 0 评论 -
编写PHP扩展函数的参数
函数的参数最简单的获取函数调用者传递过来的参数便是使用zend_parse_parameters()函数。 zend_parse_parameters()函数的前几个参数我们直接用内核里宏来生成便可以了,形式为:ZEND_NUM_ARGS() TSRMLS_CC,注意两者之间有个空格,但是没有逗号。从名字可以看出,ZEND_NUM_ARGS()代表着参数的个数。 紧接着需要传递给zend_pa...原创 2015-11-22 21:52:15 · 126 阅读 · 0 评论 -
编写PHP扩展函数返回值宏定义
#define ZVAL_FALSE(z) ZVAL_BOOL(z, 0)#define ZVAL_TRUE(z) ZVAL_BOOL(z, 1)#define RETVAL_RESOURCE(l) ZVAL_RESOURCE(return_value, l)#define RETVAL_BOOL(b) ZVAL_BOOL(return_val...原创 2015-11-22 19:12:11 · 276 阅读 · 0 评论 -
编写PHP扩展函数需要了解的宏定义
ZEND_FUNCTION()宏函数ZEND_FUNCTION()宏函数也可以写成PHP_FUNCTION(),但ZEND_FUNCTION()更前卫、标准一些,但两者是完全相同的。#define PHP_FUNCTION ZEND_FUNCTION #define ZEND_FUNCTION(name) ZEND_NAMED_FU...原创 2015-11-22 18:07:24 · 161 阅读 · 0 评论 -
PHP中的魔术变量
From: http://duanshaozhen.iteye.com/__LINE__ 文件中的当前行号。__FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。__DIR__ 文件所在的目录。如...原创 2014-11-19 20:52:34 · 147 阅读 · 0 评论