php extension 声明类属性
来源:互联网 发布:js eval解析语句 编辑:程序博客网 时间:2024/05/22 14:45
http://blog.00rz.com/2010/09/php-extension-delcare-class-array-property.html
在弄一个php扩展, 想把 扩展写成类的 形式, 于是在声明的时候 想给类加个array 属性
于是expect 代码是这样的
- PHP_MINIT_FUNCTION(concurrency)
- {
- zend_class_entry ce;
- INIT_CLASS_ENTRY(ce, PHP_CONCURRENCY_CLASSNAME, concurrency_class_methods);
- concurrency_class_entry = zend_register_internal_class(&ce TSRMLS_CC);
- zval *requests;
- MAKE_STD_ZVAL(requests);
- array_init(requests);
- zend_printf("%d", requests->type);
- zend_declare_property(concurrency_class_entry, "requests", strlen("requests"), requests, ZEND_ACC_PUBLIC);
- return SUCCESS;
- }
结果报错,
PHP Fatal error: Internal zval’s can’t be arrays, objects or resources in Unknown on line 0
把requests->type 用zend_printf打出来发现 结果是4 是 ZEND定义的IS_ARRAY,
继续翻代码
发现在Zend/zend_API.c 里面zend_declare_property的原型 有这样的定义
- if (ce->type & ZEND_INTERNAL_CLASS) {
- switch(Z_TYPE_P(property)) {
- case IS_ARRAY:
- case IS_CONSTANT_ARRAY:
- case IS_OBJECT:
- case IS_RESOURCE:
- zend_error(E_CORE_ERROR, "Internal zval’s can’t be arrays, objects or resources");
- break;
- default:
- break;
- }
- }
不知何意看
staceflow 上也有人遇到这种问题
http://stackoverflow.com/posts/1105360/revisions
,没办法,
于是就改成在构造函数里面 增加属性的声明
just as follow
- PHP_METHOD(Concurrency, __construct)
- {
- zval *pThis;
- pThis = getThis();
- zval *requests;
- MAKE_STD_ZVAL(requests);
- array_init(requests);
- add_property_zval_ex(pThis, "requests", sizeof("requests"), requests);
- }
在这里记下!
0 0
- php extension 声明类属性
- 属性声明在@implementation里与extension里的区别
- PHP类中声明数组类型属性出现的问题
- PHP Extension
- php extension
- iOS 属性声明在@implementation里与extension里的区别
- 类的属性即声明
- PHP SOAP Extension
- MaxDB PHP extension released!
- [PHP] User Defined Extension
- PHP Extension 读书笔记
- PHP Extension programming
- PHP Extension programming
- php C extension扩展
- PHP Extension开发基础
- php extension dll all
- php.ini extension”模块
- Mcrypt PHP extension
- 解决windows下C32ASM反汇编无法打开的问题
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- (八)Spring核心框架 - AOP的原理及源码解析
- 关于虚拟函数的一些总结 (参考:深入浅出MFC 第二版 候俊杰)
- Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)
- php extension 声明类属性
- 【程序员面试宝典读书笔记】螺旋队列
- 有女朋友的,请好好的对待她
- 网络流的建模 !!有上下界的网络流!![运输问题2]
- 产品新人,新人如何自学产品?
- 假设一个数学算法中包括圆括号(),方括号[],花括号{}三种类型,编写表达式的括号是否配对
- Java容器
- Linux 压缩解压命令
- C++ map的使用