diff --git a/src/collections.c b/src/collections.c index 2033dfd..3bbae19 100644 --- a/src/collections.c +++ b/src/collections.c @@ -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), diff --git a/src/collections_methods.c b/src/collections_methods.c index 57e5500..f508846 100644 --- a/src/collections_methods.c +++ b/src/collections_methods.c @@ -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; \