From 2bd0c68435d088e5efb247c496340d4f9bcdd168 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 5 Jul 2023 09:59:27 +0200 Subject: [PATCH] make version props typed --- src/php_pq_object.c | 3 ++- src/php_pqconn.c | 36 +++++++++++++++++++++++++++++++++--- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/src/php_pq_object.c b/src/php_pq_object.c index 5b3f217..47d3496 100644 --- a/src/php_pq_object.c +++ b/src/php_pq_object.c @@ -231,12 +231,13 @@ zval *php_pq_object_read_prop(zend_object *object, zend_string *member, int type if (SUCCESS != php_pq_object_read_prop_ex(object, member, type, tmp)) { return zend_std_read_property(object, member, type, cache_slot, tmp); } - +/* zend_std_write_property(object, member, tmp, cache_slot); if (cache_slot) { *cache_slot = NULL; } +*/ return tmp; } #else diff --git a/src/php_pqconn.c b/src/php_pqconn.c index 19ea6f0..1d1f3f8 100644 --- a/src/php_pqconn.c +++ b/src/php_pqconn.c @@ -2160,19 +2160,49 @@ PHP_MINIT_FUNCTION(pqconn) ph.write = NULL; #ifdef HAVE_PQLIBVERSION - zend_declare_property_null(php_pqconn_class_entry, ZEND_STRL("libraryVersion"), ZEND_ACC_PUBLIC|ZEND_ACC_READONLY); +#if PHP_VERSION_ID < 80000 + zend_declare_property_null(php_pqconn_class_entry, ZEND_STRL("libraryVersion"), ZEND_ACC_PUBLIC); +#else + { + zval default_value; + zend_string *name = zend_string_init(ZEND_STRL("libraryVersion"), 1); + ZVAL_UNDEF(&default_value); + zend_declare_typed_property(php_pqconn_class_entry, name, &default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_string_release(name); + } +#endif ph.read = php_pqconn_object_read_lib_version; zend_hash_str_add_mem(&php_pqconn_object_prophandlers, ZEND_STRL("libraryVersion"), (void *) &ph, sizeof(ph)); #endif #ifdef HAVE_PQPROTOCOLVERSION - zend_declare_property_null(php_pqconn_class_entry, ZEND_STRL("protocolVersion"), ZEND_ACC_PUBLIC|ZEND_ACC_READONLY); +#if PHP_VERSION_ID < 80000 + zend_declare_property_null(php_pqconn_class_entry, ZEND_STRL("protocolVersion"), ZEND_ACC_PUBLIC); +#else + { + zval default_value; + zend_string *name = zend_string_init(ZEND_STRL("protocolVersion"), 1); + ZVAL_UNDEF(&default_value); + zend_declare_typed_property(php_pqconn_class_entry, name, &default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_string_release(name); + } +#endif ph.read = php_pqconn_object_read_protocol_version; zend_hash_str_add_mem(&php_pqconn_object_prophandlers, ZEND_STRL("protocolVersion"), (void *) &ph, sizeof(ph)); #endif #ifdef HAVE_PQSERVERVERSION - zend_declare_property_null(php_pqconn_class_entry, ZEND_STRL("serverVersion"), ZEND_ACC_PUBLIC|ZEND_ACC_READONLY); +#if PHP_VERSION_ID < 80000 + zend_declare_property_null(php_pqconn_class_entry, ZEND_STRL("serverVersion"), ZEND_ACC_PUBLIC); +#else + { + zval default_value; + zend_string *name = zend_string_init(ZEND_STRL("serverVersion"), 1); + ZVAL_UNDEF(&default_value); + zend_declare_typed_property(php_pqconn_class_entry, name, &default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_string_release(name); + } +#endif ph.read = php_pqconn_object_read_server_version; zend_hash_str_add_mem(&php_pqconn_object_prophandlers, ZEND_STRL("serverVersion"), (void *) &ph, sizeof(ph)); #endif -- 2.30.2