Compatible to PHP 7.0.x

This commit is contained in:
CismonX 2018-03-26 13:54:01 +08:00
parent df8f8dd322
commit b099ab663b
2 changed files with 18 additions and 27 deletions

View File

@ -23,26 +23,15 @@ zend_class_entry* collections_pair_ce;
PHP_MINIT_FUNCTION(collections)
{
collection_property_name = zend_string_init("_a", strlen("_a"), 1);
pair_first_name = zend_string_init("first", strlen("first"), 1);
pair_second_name = zend_string_init("second", strlen("second"), 1);
zend_class_entry collection_ce;
INIT_CLASS_ENTRY_EX(collection_ce, "Collection", strlen("Collection"), collection_methods);
INIT_CLASS_ENTRY_EX(collection_ce, "Collection", sizeof "Collection" - 1, collection_methods);
collections_collection_ce = zend_register_internal_class(&collection_ce);
zend_declare_property_null(collections_collection_ce, "_a", strlen("_a"), ZEND_ACC_PRIVATE);
zend_declare_property_null(collections_collection_ce, "_a", sizeof "_a" - 1, ZEND_ACC_PRIVATE);
zend_class_entry pair_ce;
INIT_CLASS_ENTRY_EX(pair_ce, "Pair", strlen("Pair"), pair_methods);
INIT_CLASS_ENTRY_EX(pair_ce, "Pair", sizeof "Pair" - 1, pair_methods);
collections_pair_ce = zend_register_internal_class(&pair_ce);
zend_declare_property_null(collections_pair_ce, "first", strlen("first"), ZEND_ACC_PUBLIC);
zend_declare_property_null(collections_pair_ce, "second", strlen("second"), ZEND_ACC_PUBLIC);
return SUCCESS;
}
PHP_MSHUTDOWN_FUNCTION(collections)
{
zend_string_release(collection_property_name);
zend_string_release(pair_first_name);
zend_string_release(pair_second_name);
zend_declare_property_null(collections_pair_ce, "first", sizeof "first" - 1, ZEND_ACC_PUBLIC);
zend_declare_property_null(collections_pair_ce, "second", sizeof "second" - 1, ZEND_ACC_PUBLIC);
return SUCCESS;
}
@ -66,7 +55,7 @@ zend_module_entry collections_module_entry = {
"collections",
NULL,
PHP_MINIT(collections),
PHP_MSHUTDOWN(collections),
NULL,
PHP_RINIT(collections),
NULL,
PHP_MINFO(collections),

View File

@ -23,18 +23,20 @@
#define IS_PAIR(zval) \
EXPECTED(Z_TYPE(zval) == IS_OBJECT) && EXPECTED(Z_OBJCE(zval) == collections_pair_ce)
#define OBJ_PROPERTY_UPDATE(obj, property_name, value) \
zend_update_property_ex(zend_get_executed_scope(), obj, property_name, value)
#define OBJ_PROPERTY_FETCH(obj, property_name) \
zend_read_property_ex(zend_get_executed_scope(), obj, property_name, 1, &rv)
#define COLLECTION_UPDATE(obj, value) OBJ_PROPERTY_UPDATE(obj, collection_property_name, value)
#define OBJ_PROPERTY_UPDATE(obj, property_name, name_len, value) \
zend_update_property(zend_get_executed_scope(), obj, property_name, name_len, value)
#define OBJ_PROPERTY_FETCH(obj, property_name, name_len) \
zend_read_property(zend_get_executed_scope(), obj, property_name, name_len, 1, &rv)
#define COLLECTION_UPDATE(obj, value) OBJ_PROPERTY_UPDATE(obj, "_a", sizeof "_a" - 1, value)
#define COLLECTION_UPDATE_EX(value) COLLECTION_UPDATE(getThis(), value)
#define COLLECTION_FETCH(obj) OBJ_PROPERTY_FETCH(obj, collection_property_name)
#define COLLECTION_FETCH(obj) OBJ_PROPERTY_FETCH(obj, "_a", sizeof "_a" - 1)
#define COLLECTION_FETCH_EX() COLLECTION_FETCH(getThis())
#define PAIR_UPDATE_FIRST(obj, value) OBJ_PROPERTY_UPDATE(obj, pair_first_name, value)
#define PAIR_UPDATE_SECOND(obj, value) OBJ_PROPERTY_UPDATE(obj, pair_second_name, value)
#define PAIR_FETCH_FIRST(obj) OBJ_PROPERTY_FETCH(obj, pair_first_name)
#define PAIR_FETCH_SECOND(obj) OBJ_PROPERTY_FETCH(obj, pair_second_name)
#define PAIR_UPDATE_FIRST(obj, value) \
OBJ_PROPERTY_UPDATE(obj, "first", sizeof "first" - 1, value)
#define PAIR_UPDATE_SECOND(obj, value) \
OBJ_PROPERTY_UPDATE(obj, "second", sizeof "second" - 1, value)
#define PAIR_FETCH_FIRST(obj) OBJ_PROPERTY_FETCH(obj, "first", sizeof "first" - 1)
#define PAIR_FETCH_SECOND(obj) OBJ_PROPERTY_FETCH(obj, "second", sizeof "second" - 1)
#define INIT_FCI() \
zval params[2], rv, retval; \