我还是新来写扩展。我试图让这个是结果:你如何创建一个私有财产作为一个类中的数组在内部分机
class FooClass {
private $elements = array();
}
我得到实例化时,一个错误FooClass:
PHP致命错误:无法访问私有财产ArrayClass :: $元素
我确切地知道为什么发生这种情况,我只是不知道创建一个类定义为数组的正确方法。这是我到目前为止,我敢肯定,这是简单的:
static zend_class_entry *foo_class_ptr;
void create_class_properties(TSRMLS_D) {
zend_declare_property_null(foo_class_ptr, "elements", strlen("elements"), ZEND_ACC_PRIVATE);
}
ZEND_METHOD(foo_class, __construct) {
zval *this = getThis();
zval *elements;
MAKE_STD_ZVAL(elements);
array_init(elements);
add_property_zval_ex(this, "elements", sizeof("elements"), elements);
}
static zend_function_entry foo_class_methods_def[] = {
PHP_ME(foo_class, __construct, NULL, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
};
void create_class_def(TSRMLS_D) {
zend_class_entry ce;
INIT_CLASS_ENTRY(ce, "FooClass", foo_class_methods_def);
foo_class_ptr = zend_register_internal_class(&ce);
}
create_class_def得到的来自PHP_MINIT_FUNCTION称为()。这里有一个类似的问题:How do I add an array as an Object Property to a class declared within a PHP extension?但它没有解决私有/受保护的访问。
THX