xref: /OK3568_Linux_fs/buildroot/package/php-amqp/0002-more-work-for-php-8.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1From df1241852b359cf12c346beaa68de202257efdf1 Mon Sep 17 00:00:00 2001
2From: Remi Collet <remi@remirepo.net>
3Date: Wed, 9 Dec 2020 17:00:46 +0100
4Subject: [PATCH] more work for PHP 8 (#383)
5
6* more work for PHP 8
7
8* split test
9
10Signed-off-by: Remi Collet <remi@remirepo.net>
11Signed-off-by: Adam Duskett <aduskett@gmail.com>
12---
13 amqp_basic_properties.c       |  84 +++++++++++++--------------
14 amqp_channel.c                |  49 +++++++++-------
15 amqp_connection.c             | 106 +++++++++++++++++-----------------
16 amqp_connection_resource.c    |  12 ++--
17 amqp_decimal.c                |   8 +--
18 amqp_envelope.c               |  12 ++--
19 amqp_exchange.c               |  22 +++----
20 amqp_queue.c                  |  38 ++++++------
21 amqp_timestamp.c              |   6 +-
22 amqp_type.c                   |   6 +-
23 php5_support.h                |   2 +
24 php7_support.h                |   9 +++
25 php_amqp.h                    |   8 +--
26 tests/amqptimestamp.phpt      |   4 +-
27 tests/amqptimestamp_php8.phpt |  60 +++++++++++++++++++
28 tests/bug_61533.phpt          |   2 +-
29 16 files changed, 254 insertions(+), 174 deletions(-)
30 create mode 100644 tests/amqptimestamp_php8.phpt
31
32diff --git a/amqp_basic_properties.c b/amqp_basic_properties.c
33index 69b813e..5375f44 100644
34--- a/amqp_basic_properties.c
35+++ b/amqp_basic_properties.c
36@@ -70,7 +70,7 @@ void php_amqp_basic_properties_set_empty_headers(zval *obj TSRMLS_DC) {
37     PHP5to7_MAYBE_INIT(headers);
38     PHP5to7_ARRAY_INIT(headers);
39
40-    zend_update_property(this_ce, obj, ZEND_STRL("headers"), PHP5to7_MAYBE_PTR(headers) TSRMLS_CC);
41+    zend_update_property(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("headers"), PHP5to7_MAYBE_PTR(headers) TSRMLS_CC);
42
43     PHP5to7_MAYBE_DESTROY(headers);
44 }
45@@ -118,29 +118,29 @@ static PHP_METHOD(AMQPBasicProperties, __construct) {
46                              ) == FAILURE) {
47         return;
48     }
49-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("content_type"), content_type, content_type_len TSRMLS_CC);
50-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("content_encoding"), content_encoding, content_encoding_len TSRMLS_CC);
51+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("content_type"), content_type, content_type_len TSRMLS_CC);
52+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("content_encoding"), content_encoding, content_encoding_len TSRMLS_CC);
53
54     if (headers != NULL) {
55-        zend_update_property(this_ce, getThis(), ZEND_STRL("headers"), headers TSRMLS_CC);
56+        zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("headers"), headers TSRMLS_CC);
57     } else {
58         php_amqp_basic_properties_set_empty_headers(getThis() TSRMLS_CC);
59     }
60
61-    zend_update_property_long(this_ce, getThis(), ZEND_STRL("delivery_mode"), delivery_mode TSRMLS_CC);
62-    zend_update_property_long(this_ce, getThis(), ZEND_STRL("priority"), priority TSRMLS_CC);
63+    zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("delivery_mode"), delivery_mode TSRMLS_CC);
64+    zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("priority"), priority TSRMLS_CC);
65
66-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("correlation_id"), correlation_id, correlation_id_len TSRMLS_CC);
67-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("reply_to"), reply_to, reply_to_len TSRMLS_CC);
68-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("expiration"), expiration, expiration_len TSRMLS_CC);
69-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("message_id"), message_id, message_id_len TSRMLS_CC);
70+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("correlation_id"), correlation_id, correlation_id_len TSRMLS_CC);
71+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("reply_to"), reply_to, reply_to_len TSRMLS_CC);
72+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("expiration"), expiration, expiration_len TSRMLS_CC);
73+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("message_id"), message_id, message_id_len TSRMLS_CC);
74
75-    zend_update_property_long(this_ce, getThis(), ZEND_STRL("timestamp"), timestamp TSRMLS_CC);
76+    zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("timestamp"), timestamp TSRMLS_CC);
77
78-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("type"), type, type_len TSRMLS_CC);
79-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("user_id"), user_id, user_id_len TSRMLS_CC);
80-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("app_id"), app_id, app_id_len TSRMLS_CC);
81-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("cluster_id"), cluster_id, cluster_id_len TSRMLS_CC);
82+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("type"), type, type_len TSRMLS_CC);
83+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("user_id"), user_id, user_id_len TSRMLS_CC);
84+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("app_id"), app_id, app_id_len TSRMLS_CC);
85+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("cluster_id"), cluster_id, cluster_id_len TSRMLS_CC);
86 }
87 /* }}} */
88
89@@ -460,7 +460,7 @@ void parse_amqp_table(amqp_table_t *table, zval *result TSRMLS_DC) {
90 				object_init_ex(PHP5to7_MAYBE_PTR(value), amqp_timestamp_class_entry);
91
92 				zend_call_method_with_1_params(
93-						&value,
94+						PHP5to8_OBJ_PROP(&value),
95 						amqp_timestamp_class_entry,
96 						NULL,
97 						"__construct",
98@@ -488,7 +488,7 @@ void parse_amqp_table(amqp_table_t *table, zval *result TSRMLS_DC) {
99                 object_init_ex(PHP5to7_MAYBE_PTR(value), amqp_decimal_class_entry);
100
101                 zend_call_method_with_2_params(
102-                        &value,
103+                        PHP5to8_OBJ_PROP(&value),
104                         amqp_decimal_class_entry,
105                         NULL,
106                         "__construct",
107@@ -525,93 +525,93 @@ void php_amqp_basic_properties_extract(amqp_basic_properties_t *p, zval *obj TSR
108     PHP5to7_ARRAY_INIT(headers);
109
110     if (p->_flags & AMQP_BASIC_CONTENT_TYPE_FLAG) {
111-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("content_type"), (const char *) p->content_type.bytes, (PHP5to7_param_str_len_type_t) p->content_type.len TSRMLS_CC);
112+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("content_type"), (const char *) p->content_type.bytes, (PHP5to7_param_str_len_type_t) p->content_type.len TSRMLS_CC);
113     } else {
114         /* BC */
115-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("content_type"), "", 0 TSRMLS_CC);
116+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("content_type"), "", 0 TSRMLS_CC);
117     }
118
119     if (p->_flags & AMQP_BASIC_CONTENT_ENCODING_FLAG) {
120-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("content_encoding"), (const char *) p->content_encoding.bytes, (PHP5to7_param_str_len_type_t) p->content_encoding.len TSRMLS_CC);
121+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("content_encoding"), (const char *) p->content_encoding.bytes, (PHP5to7_param_str_len_type_t) p->content_encoding.len TSRMLS_CC);
122     } else {
123         /* BC */
124-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("content_encoding"), "", 0 TSRMLS_CC);
125+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("content_encoding"), "", 0 TSRMLS_CC);
126     }
127
128     if (p->_flags & AMQP_BASIC_HEADERS_FLAG) {
129         parse_amqp_table(&(p->headers), PHP5to7_MAYBE_PTR(headers) TSRMLS_CC);
130     }
131
132-    zend_update_property(this_ce, obj, ZEND_STRL("headers"), PHP5to7_MAYBE_PTR(headers) TSRMLS_CC);
133+    zend_update_property(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("headers"), PHP5to7_MAYBE_PTR(headers) TSRMLS_CC);
134
135     if (p->_flags & AMQP_BASIC_DELIVERY_MODE_FLAG) {
136-        zend_update_property_long(this_ce, obj, ZEND_STRL("delivery_mode"), (PHP5to7_param_long_type_t) p->delivery_mode TSRMLS_CC);
137+        zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("delivery_mode"), (PHP5to7_param_long_type_t) p->delivery_mode TSRMLS_CC);
138     } else {
139         /* BC */
140-        zend_update_property_long(this_ce, obj, ZEND_STRL("delivery_mode"), AMQP_DELIVERY_NONPERSISTENT TSRMLS_CC);
141+        zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("delivery_mode"), AMQP_DELIVERY_NONPERSISTENT TSRMLS_CC);
142     }
143
144     if (p->_flags & AMQP_BASIC_PRIORITY_FLAG) {
145-        zend_update_property_long(this_ce, obj, ZEND_STRL("priority"), (PHP5to7_param_long_type_t) p->priority TSRMLS_CC);
146+        zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("priority"), (PHP5to7_param_long_type_t) p->priority TSRMLS_CC);
147     } else {
148         /* BC */
149-        zend_update_property_long(this_ce, obj, ZEND_STRL("priority"), 0 TSRMLS_CC);
150+        zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("priority"), 0 TSRMLS_CC);
151     }
152
153     if (p->_flags & AMQP_BASIC_CORRELATION_ID_FLAG) {
154-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("correlation_id"), (const char *) p->correlation_id.bytes, (PHP5to7_param_str_len_type_t) p->correlation_id.len TSRMLS_CC);
155+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("correlation_id"), (const char *) p->correlation_id.bytes, (PHP5to7_param_str_len_type_t) p->correlation_id.len TSRMLS_CC);
156     } else {
157         /* BC */
158-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("correlation_id"), "", 0 TSRMLS_CC);
159+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("correlation_id"), "", 0 TSRMLS_CC);
160     }
161
162     if (p->_flags & AMQP_BASIC_REPLY_TO_FLAG) {
163-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("reply_to"), (const char *) p->reply_to.bytes, (PHP5to7_param_str_len_type_t) p->reply_to.len TSRMLS_CC);
164+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("reply_to"), (const char *) p->reply_to.bytes, (PHP5to7_param_str_len_type_t) p->reply_to.len TSRMLS_CC);
165     } else {
166         /* BC */
167-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("reply_to"), "", 0 TSRMLS_CC);
168+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("reply_to"), "", 0 TSRMLS_CC);
169     }
170
171     if (p->_flags & AMQP_BASIC_EXPIRATION_FLAG) {
172-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("expiration"), (const char *) p->expiration.bytes, (PHP5to7_param_str_len_type_t) p->expiration.len TSRMLS_CC);
173+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("expiration"), (const char *) p->expiration.bytes, (PHP5to7_param_str_len_type_t) p->expiration.len TSRMLS_CC);
174     } else {
175         /* BC */
176-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("expiration"), "", 0 TSRMLS_CC);
177+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("expiration"), "", 0 TSRMLS_CC);
178     }
179
180     if (p->_flags & AMQP_BASIC_MESSAGE_ID_FLAG) {
181-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("message_id"), (const char *) p->message_id.bytes, (PHP5to7_param_str_len_type_t) p->message_id.len TSRMLS_CC);
182+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("message_id"), (const char *) p->message_id.bytes, (PHP5to7_param_str_len_type_t) p->message_id.len TSRMLS_CC);
183     } else {
184         /* BC */
185-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("message_id"), "", 0 TSRMLS_CC);
186+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("message_id"), "", 0 TSRMLS_CC);
187     }
188
189     if (p->_flags & AMQP_BASIC_TIMESTAMP_FLAG) {
190-        zend_update_property_long(this_ce, obj, ZEND_STRL("timestamp"), (PHP5to7_param_long_type_t) p->timestamp TSRMLS_CC);
191+        zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("timestamp"), (PHP5to7_param_long_type_t) p->timestamp TSRMLS_CC);
192     } else {
193         /* BC */
194-        zend_update_property_long(this_ce, obj, ZEND_STRL("timestamp"), 0 TSRMLS_CC);
195+        zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("timestamp"), 0 TSRMLS_CC);
196     }
197
198     if (p->_flags & AMQP_BASIC_TYPE_FLAG) {
199-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("type"), (const char *) p->type.bytes, (PHP5to7_param_str_len_type_t) p->type.len TSRMLS_CC);
200+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("type"), (const char *) p->type.bytes, (PHP5to7_param_str_len_type_t) p->type.len TSRMLS_CC);
201     } else {
202         /* BC */
203-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("type"), "", 0 TSRMLS_CC);
204+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("type"), "", 0 TSRMLS_CC);
205     }
206
207     if (p->_flags & AMQP_BASIC_USER_ID_FLAG) {
208-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("user_id"), (const char *) p->user_id.bytes, (PHP5to7_param_str_len_type_t) p->user_id.len TSRMLS_CC);
209+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("user_id"), (const char *) p->user_id.bytes, (PHP5to7_param_str_len_type_t) p->user_id.len TSRMLS_CC);
210     } else {
211         /* BC */
212-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("user_id"), "", 0 TSRMLS_CC);
213+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("user_id"), "", 0 TSRMLS_CC);
214     }
215
216     if (p->_flags & AMQP_BASIC_APP_ID_FLAG) {
217-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("app_id"), (const char *) p->app_id.bytes, (PHP5to7_param_str_len_type_t) p->app_id.len TSRMLS_CC);
218+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("app_id"), (const char *) p->app_id.bytes, (PHP5to7_param_str_len_type_t) p->app_id.len TSRMLS_CC);
219     } else {
220         /* BC */
221-        zend_update_property_stringl(this_ce, obj, ZEND_STRL("app_id"), "", 0 TSRMLS_CC);
222+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("app_id"), "", 0 TSRMLS_CC);
223     }
224
225     PHP5to7_MAYBE_DESTROY(headers);
226diff --git a/amqp_channel.c b/amqp_channel.c
227index ef9552a..493c6d3 100644
228--- a/amqp_channel.c
229+++ b/amqp_channel.c
230@@ -152,10 +152,15 @@ static zval * php_amqp_get_fci_gc_data(zend_fcall_info *fci, zval *gc_data) {
231 	return gc_data;
232 }
233
234+#if PHP_MAJOR_VERSION < 8
235 static HashTable *amqp_channel_gc(zval *object, zval **table, int *n) /* {{{ */
236 {
237-	amqp_channel_object *channel = PHP_AMQP_GET_CHANNEL(object);
238-
239+    amqp_channel_object *channel = PHP_AMQP_GET_CHANNEL(object);
240+#else
241+static HashTable *amqp_channel_gc(zend_object *object, zval **table, int *n) /* {{{ */
242+{
243+	amqp_channel_object *channel = php_amqp_channel_object_fetch(object);
244+#endif
245 	int basic_return_cnt = php_amqp_get_fci_gc_data_count(&channel->callbacks.basic_return.fci);
246 	int basic_ack_cnt    = php_amqp_get_fci_gc_data_count(&channel->callbacks.basic_ack.fci);
247 	int basic_nack_cnt   = php_amqp_get_fci_gc_data_count(&channel->callbacks.basic_nack.fci);
248@@ -249,7 +254,7 @@ static HashTable *amqp_channel_gc(zval *object, zval ***table, int *n TSRMLS_DC)
249 	*table = channel->gc_data;
250 	*n     = cnt;
251
252-	return zend_std_get_properties(object TSRMLS_CC);
253+	return zend_std_get_properties(PHP5to8_OBJ_PROP(object) TSRMLS_CC);
254 } /* }}} */
255
256 #endif
257@@ -331,7 +336,7 @@ static PHP_METHOD(amqp_channel_class, __construct)
258 	amqp_connection_object *connection;
259
260 	/* Parse out the method parameters */
261-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &connection_object) == FAILURE) {
262+	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &connection_object, amqp_connection_class_entry) == FAILURE) {
263 		zend_throw_exception(amqp_channel_exception_class_entry, "Parameter must be an instance of AMQPConnection.", 0 TSRMLS_CC);
264 		RETURN_NULL();
265 	}
266@@ -341,7 +346,7 @@ static PHP_METHOD(amqp_channel_class, __construct)
267 	PHP5to7_MAYBE_INIT(consumers);
268 	PHP5to7_ARRAY_INIT(consumers);
269
270-	zend_update_property(this_ce, getThis(), ZEND_STRL("consumers"), PHP5to7_MAYBE_PTR(consumers) TSRMLS_CC);
271+	zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("consumers"), PHP5to7_MAYBE_PTR(consumers) TSRMLS_CC);
272
273 	PHP5to7_MAYBE_DESTROY(consumers);
274
275@@ -351,16 +356,16 @@ static PHP_METHOD(amqp_channel_class, __construct)
276 #endif
277
278 	/* Set the prefetch count */
279-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("prefetch_count"), INI_INT("amqp.prefetch_count") TSRMLS_CC);
280+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("prefetch_count"), INI_INT("amqp.prefetch_count") TSRMLS_CC);
281
282 	/* Set the prefetch size */
283-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("prefetch_size"), INI_INT("amqp.prefetch_size") TSRMLS_CC);
284+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("prefetch_size"), INI_INT("amqp.prefetch_size") TSRMLS_CC);
285
286 	/* Set the global prefetch count */
287-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("global_prefetch_count"), INI_INT("amqp.global_prefetch_count") TSRMLS_CC);
288+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("global_prefetch_count"), INI_INT("amqp.global_prefetch_count") TSRMLS_CC);
289
290 	/* Set the global prefetch size */
291-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("global_prefetch_size"), INI_INT("amqp.global_prefetch_size") TSRMLS_CC);
292+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("global_prefetch_size"), INI_INT("amqp.global_prefetch_size") TSRMLS_CC);
293
294 	/* Pull out and verify the connection */
295 	connection = PHP_AMQP_GET_CONNECTION(connection_object);
296@@ -376,7 +381,7 @@ static PHP_METHOD(amqp_channel_class, __construct)
297 		return;
298 	}
299
300-	zend_update_property(this_ce, getThis(), ZEND_STRL("connection"), connection_object TSRMLS_CC);
301+	zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("connection"), connection_object TSRMLS_CC);
302
303 	channel_resource = (amqp_channel_resource*)ecalloc(1, sizeof(amqp_channel_resource));
304 	channel->channel_resource = channel_resource;
305@@ -580,8 +585,8 @@ static PHP_METHOD(amqp_channel_class, setPrefetchCount)
306 	}
307
308 	/* Set the prefetch count - the implication is to disable the size */
309-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("prefetch_count"), prefetch_count TSRMLS_CC);
310-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("prefetch_size"), 0 TSRMLS_CC);
311+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("prefetch_count"), prefetch_count TSRMLS_CC);
312+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("prefetch_size"), 0 TSRMLS_CC);
313
314 	RETURN_TRUE;
315 }
316@@ -659,8 +664,8 @@ static PHP_METHOD(amqp_channel_class, setPrefetchSize)
317 	}
318
319 	/* Set the prefetch size - the implication is to disable the count */
320-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("prefetch_count"), 0 TSRMLS_CC);
321-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("prefetch_size"), prefetch_size TSRMLS_CC);
322+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("prefetch_count"), 0 TSRMLS_CC);
323+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("prefetch_size"), prefetch_size TSRMLS_CC);
324
325 	RETURN_TRUE;
326 }
327@@ -715,8 +720,8 @@ static PHP_METHOD(amqp_channel_class, setGlobalPrefetchCount)
328 	}
329
330 	/* Set the global prefetch count - the implication is to disable the size */
331-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("global_prefetch_count"), global_prefetch_count TSRMLS_CC);
332-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("global_prefetch_size"), 0 TSRMLS_CC);
333+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("global_prefetch_count"), global_prefetch_count TSRMLS_CC);
334+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("global_prefetch_size"), 0 TSRMLS_CC);
335
336 	RETURN_TRUE;
337 }
338@@ -771,8 +776,8 @@ static PHP_METHOD(amqp_channel_class, setGlobalPrefetchSize)
339 	}
340
341 	/* Set the global prefetch size - the implication is to disable the count */
342-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("global_prefetch_count"), 0 TSRMLS_CC);
343-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("global_prefetch_size"), global_prefetch_size TSRMLS_CC);
344+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("global_prefetch_count"), 0 TSRMLS_CC);
345+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("global_prefetch_size"), global_prefetch_size TSRMLS_CC);
346
347 	RETURN_TRUE;
348 }
349@@ -808,11 +813,11 @@ static PHP_METHOD(amqp_channel_class, qos)
350
351 	/* Set the prefetch size and prefetch count */
352 	if (global) {
353-		zend_update_property_long(this_ce, getThis(), ZEND_STRL("global_prefetch_size"), prefetch_size TSRMLS_CC);
354-		zend_update_property_long(this_ce, getThis(), ZEND_STRL("global_prefetch_count"), prefetch_count TSRMLS_CC);
355+		zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("global_prefetch_size"), prefetch_size TSRMLS_CC);
356+		zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("global_prefetch_count"), prefetch_count TSRMLS_CC);
357 	} else {
358-		zend_update_property_long(this_ce, getThis(), ZEND_STRL("prefetch_size"), prefetch_size TSRMLS_CC);
359-		zend_update_property_long(this_ce, getThis(), ZEND_STRL("prefetch_count"), prefetch_count TSRMLS_CC);
360+		zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("prefetch_size"), prefetch_size TSRMLS_CC);
361+		zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("prefetch_count"), prefetch_count TSRMLS_CC);
362 	}
363
364 	/* If we are already connected, set the new prefetch count */
365diff --git a/amqp_connection.c b/amqp_connection.c
366index 5891a4f..466501a 100644
367--- a/amqp_connection.c
368+++ b/amqp_connection.c
369@@ -68,9 +68,9 @@ zend_object_handlers amqp_connection_object_handlers;
370 		convert_to_string(PHP5to7_MAYBE_DEREF(zdata)); \
371 	} \
372 	if (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) { \
373-		zend_update_property_string(this_ce, getThis(), ZEND_STRL(name), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC); \
374+		zend_update_property_string(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC); \
375 	} else { \
376-		zend_update_property_string(this_ce, getThis(), ZEND_STRL(name), INI_STR("amqp." name) TSRMLS_CC); \
377+		zend_update_property_string(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), INI_STR("amqp." name) TSRMLS_CC); \
378 	}
379
380 #define PHP_AMQP_EXTRACT_CONNECTION_BOOL(name) \
381@@ -80,9 +80,9 @@ zend_object_handlers amqp_connection_object_handlers;
382 		convert_to_long(PHP5to7_MAYBE_DEREF(zdata)); \
383 	} \
384 	if (zdata) { \
385-		zend_update_property_bool(this_ce, getThis(), ZEND_STRL(name), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC); \
386+		zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC); \
387 	} else { \
388-		zend_update_property_bool(this_ce, getThis(), ZEND_STRL(name), INI_INT("amqp." name) TSRMLS_CC); \
389+		zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), INI_INT("amqp." name) TSRMLS_CC); \
390 	}
391
392 static int php_amqp_connection_resource_deleter(PHP5to7_zend_resource_le_t *el, amqp_connection_resource *connection_resource TSRMLS_DC)
393@@ -344,13 +344,13 @@ static PHP_METHOD(amqp_connection_class, __construct)
394 	/* Validate the given login */
395 	if (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {
396 		if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) < 128) {
397-			zend_update_property(this_ce, getThis(), ZEND_STRL("login"), PHP5to7_MAYBE_DEREF(zdata)TSRMLS_CC);
398+			zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("login"), PHP5to7_MAYBE_DEREF(zdata)TSRMLS_CC);
399 		} else {
400 			zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'login' exceeds 128 character limit.", 0 TSRMLS_CC);
401 			return;
402 		}
403 	} else {
404-		zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("login"), INI_STR("amqp.login"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.login")) > 128 ? 128 : strlen(INI_STR("amqp.login"))) TSRMLS_CC);
405+		zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("login"), INI_STR("amqp.login"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.login")) > 128 ? 128 : strlen(INI_STR("amqp.login"))) TSRMLS_CC);
406 	}
407
408 	/* Pull the password out of the $params array */
409@@ -362,13 +362,13 @@ static PHP_METHOD(amqp_connection_class, __construct)
410 	/* Validate the given password */
411 	if (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {
412 		if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) < 128) {
413-			zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("password"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
414+			zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("password"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
415 		} else {
416 			zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'password' exceeds 128 character limit.", 0 TSRMLS_CC);
417 			return;
418 		}
419 	} else {
420-		zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("password"), INI_STR("amqp.password"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.password")) > 128 ? 128 : strlen(INI_STR("amqp.password"))) TSRMLS_CC);
421+		zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("password"), INI_STR("amqp.password"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.password")) > 128 ? 128 : strlen(INI_STR("amqp.password"))) TSRMLS_CC);
422 	}
423
424 	/* Pull the host out of the $params array */
425@@ -380,13 +380,13 @@ static PHP_METHOD(amqp_connection_class, __construct)
426 	/* Validate the given host */
427 	if (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {
428 		if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) < 128) {
429-			zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("host"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
430+			zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("host"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
431 		} else {
432 			zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'host' exceeds 128 character limit.", 0 TSRMLS_CC);
433 			return;
434 		}
435 	} else {
436-		zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("host"), INI_STR("amqp.host"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.host")) > 128 ? 128 : strlen(INI_STR("amqp.host"))) TSRMLS_CC);
437+		zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("host"), INI_STR("amqp.host"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.host")) > 128 ? 128 : strlen(INI_STR("amqp.host"))) TSRMLS_CC);
438 	}
439
440 	/* Pull the vhost out of the $params array */
441@@ -398,25 +398,25 @@ static PHP_METHOD(amqp_connection_class, __construct)
442 	/* Validate the given vhost */
443 	if (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {
444 		if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) < 128) {
445-			zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("vhost"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
446+			zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("vhost"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
447 		} else {
448 			zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'vhost' exceeds 128 character limit.", 0 TSRMLS_CC);
449 			return;
450 		}
451 	} else {
452-		zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("vhost"), INI_STR("amqp.vhost"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.vhost")) > 128 ? 128 : strlen(INI_STR("amqp.vhost"))) TSRMLS_CC);
453+		zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("vhost"), INI_STR("amqp.vhost"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.vhost")) > 128 ? 128 : strlen(INI_STR("amqp.vhost"))) TSRMLS_CC);
454
455 	}
456
457-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("port"), INI_INT("amqp.port") TSRMLS_CC);
458+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("port"), INI_INT("amqp.port") TSRMLS_CC);
459
460 	if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "port", sizeof("port"), zdata)) {
461 		SEPARATE_ZVAL(zdata);
462 		convert_to_long(PHP5to7_MAYBE_DEREF(zdata));
463-		zend_update_property_long(this_ce, getThis(), ZEND_STRL("port"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
464+		zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("port"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
465 	}
466
467-	zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), INI_FLT("amqp.read_timeout") TSRMLS_CC);
468+	zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("read_timeout"), INI_FLT("amqp.read_timeout") TSRMLS_CC);
469
470 	if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "read_timeout", sizeof("read_timeout"), zdata)) {
471 		SEPARATE_ZVAL(zdata);
472@@ -424,7 +424,7 @@ static PHP_METHOD(amqp_connection_class, __construct)
473 		if (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {
474 			zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'read_timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
475 		} else {
476-			zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
477+			zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("read_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
478 		}
479
480 		if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "timeout", sizeof("timeout"), zdata)) {
481@@ -441,7 +441,7 @@ static PHP_METHOD(amqp_connection_class, __construct)
482 		if (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {
483 			zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
484 		} else {
485-			zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
486+			zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("read_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
487 		}
488 	} else {
489
490@@ -450,17 +450,17 @@ static PHP_METHOD(amqp_connection_class, __construct)
491 			php_error_docref(NULL TSRMLS_CC, E_DEPRECATED, "INI setting 'amqp.timeout' is deprecated; use 'amqp.read_timeout' instead");
492
493 			if (strcmp(DEFAULT_READ_TIMEOUT, INI_STR("amqp.read_timeout")) == 0) {
494-				zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), INI_FLT("amqp.timeout") TSRMLS_CC);
495+				zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("read_timeout"), INI_FLT("amqp.timeout") TSRMLS_CC);
496 			} else {
497 				php_error_docref(NULL TSRMLS_CC, E_NOTICE, "INI setting 'amqp.read_timeout' will be used instead of 'amqp.timeout'");
498-				zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), INI_FLT("amqp.read_timeout") TSRMLS_CC);
499+				zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("read_timeout"), INI_FLT("amqp.read_timeout") TSRMLS_CC);
500 			}
501 		} else {
502-			zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), INI_FLT("amqp.read_timeout") TSRMLS_CC);
503+			zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("read_timeout"), INI_FLT("amqp.read_timeout") TSRMLS_CC);
504 		}
505 	}
506
507-	zend_update_property_double(this_ce, getThis(), ZEND_STRL("write_timeout"), INI_FLT("amqp.write_timeout") TSRMLS_CC);
508+	zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("write_timeout"), INI_FLT("amqp.write_timeout") TSRMLS_CC);
509
510 	if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "write_timeout", sizeof("write_timeout"), zdata)) {
511 		SEPARATE_ZVAL(zdata);
512@@ -468,11 +468,11 @@ static PHP_METHOD(amqp_connection_class, __construct)
513 		if (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {
514 			zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'write_timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
515 		} else {
516-			zend_update_property_double(this_ce, getThis(), ZEND_STRL("write_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
517+			zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("write_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
518 		}
519 	}
520
521-	zend_update_property_double(this_ce, getThis(), ZEND_STRL("rpc_timeout"), INI_FLT("amqp.rpc_timeout") TSRMLS_CC);
522+	zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("rpc_timeout"), INI_FLT("amqp.rpc_timeout") TSRMLS_CC);
523
524 	if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "rpc_timeout", sizeof("rpc_timeout"), zdata)) {
525 		SEPARATE_ZVAL(zdata);
526@@ -480,11 +480,11 @@ static PHP_METHOD(amqp_connection_class, __construct)
527 		if (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {
528 			zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'rpc_timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
529 		} else {
530-			zend_update_property_double(this_ce, getThis(), ZEND_STRL("rpc_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
531+			zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("rpc_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
532 		}
533 	}
534
535-	zend_update_property_double(this_ce, getThis(), ZEND_STRL("connect_timeout"), INI_FLT("amqp.connect_timeout") TSRMLS_CC);
536+	zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("connect_timeout"), INI_FLT("amqp.connect_timeout") TSRMLS_CC);
537
538 	if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "connect_timeout", sizeof("connect_timeout"), zdata)) {
539 		SEPARATE_ZVAL(zdata);
540@@ -492,12 +492,12 @@ static PHP_METHOD(amqp_connection_class, __construct)
541 		if (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {
542 			zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'connect_timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
543 		} else {
544-			zend_update_property_double(this_ce, getThis(), ZEND_STRL("connect_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
545+			zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("connect_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
546
547 		}
548 	}
549
550-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("channel_max"), INI_INT("amqp.channel_max") TSRMLS_CC);
551+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("channel_max"), INI_INT("amqp.channel_max") TSRMLS_CC);
552
553 	if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "channel_max", sizeof("channel_max"), zdata)) {
554 		SEPARATE_ZVAL(zdata);
555@@ -506,14 +506,14 @@ static PHP_METHOD(amqp_connection_class, __construct)
556 			zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'channel_max' is out of range.", 0 TSRMLS_CC);
557 		} else {
558 			if(Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) == 0) {
559-				zend_update_property_long(this_ce, getThis(), ZEND_STRL("channel_max"), PHP_AMQP_DEFAULT_CHANNEL_MAX TSRMLS_CC);
560+				zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("channel_max"), PHP_AMQP_DEFAULT_CHANNEL_MAX TSRMLS_CC);
561 			} else {
562-				zend_update_property_long(this_ce, getThis(), ZEND_STRL("channel_max"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
563+				zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("channel_max"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
564 			}
565 		}
566 	}
567
568-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("frame_max"), INI_INT("amqp.frame_max") TSRMLS_CC);
569+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("frame_max"), INI_INT("amqp.frame_max") TSRMLS_CC);
570
571 	if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "frame_max", sizeof("frame_max"), zdata)) {
572 		SEPARATE_ZVAL(zdata);
573@@ -522,14 +522,14 @@ static PHP_METHOD(amqp_connection_class, __construct)
574 			zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'frame_max' is out of range.", 0 TSRMLS_CC);
575 		} else {
576 			if(Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) == 0) {
577-				zend_update_property_long(this_ce, getThis(), ZEND_STRL("frame_max"), PHP_AMQP_DEFAULT_FRAME_MAX TSRMLS_CC);
578+				zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("frame_max"), PHP_AMQP_DEFAULT_FRAME_MAX TSRMLS_CC);
579 			} else {
580-				zend_update_property_long(this_ce, getThis(), ZEND_STRL("frame_max"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
581+				zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("frame_max"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
582 			}
583 		}
584 	}
585
586-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("heartbeat"), INI_INT("amqp.heartbeat") TSRMLS_CC);
587+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("heartbeat"), INI_INT("amqp.heartbeat") TSRMLS_CC);
588
589 	if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "heartbeat", sizeof("heartbeat"), zdata)) {
590 		SEPARATE_ZVAL(zdata);
591@@ -537,16 +537,16 @@ static PHP_METHOD(amqp_connection_class, __construct)
592 		if (Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0 || Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) > PHP_AMQP_MAX_HEARTBEAT) {
593 			zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'heartbeat' is out of range.", 0 TSRMLS_CC);
594 		} else {
595-			zend_update_property_long(this_ce, getThis(), ZEND_STRL("heartbeat"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
596+			zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("heartbeat"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
597 		}
598 	}
599
600-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("sasl_method"), INI_INT("amqp.sasl_method") TSRMLS_CC);
601+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("sasl_method"), INI_INT("amqp.sasl_method") TSRMLS_CC);
602
603 	if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "sasl_method", sizeof("sasl_method"), zdata)) {
604 		SEPARATE_ZVAL(zdata);
605 		convert_to_long(PHP5to7_MAYBE_DEREF(zdata));
606-		zend_update_property_long(this_ce, getThis(), ZEND_STRL("sasl_method"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
607+		zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("sasl_method"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
608 	}
609
610
611@@ -563,7 +563,7 @@ static PHP_METHOD(amqp_connection_class, __construct)
612 		convert_to_string(PHP5to7_MAYBE_DEREF(zdata));
613 	}
614 	if (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {
615-		zend_update_property_string(this_ce, getThis(), ZEND_STRL("connection_name"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
616+		zend_update_property_string(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("connection_name"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
617 	}
618 }
619 /* }}} */
620@@ -789,7 +789,7 @@ static PHP_METHOD(amqp_connection_class, setLogin)
621 		return;
622 	}
623
624-	zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("login"), login, login_len TSRMLS_CC);
625+	zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("login"), login, login_len TSRMLS_CC);
626
627 	RETURN_TRUE;
628 }
629@@ -823,7 +823,7 @@ static PHP_METHOD(amqp_connection_class, setPassword)
630 		return;
631 	}
632
633-	zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("password"), password, password_len TSRMLS_CC);
634+	zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("password"), password, password_len TSRMLS_CC);
635
636 	RETURN_TRUE;
637 }
638@@ -858,7 +858,7 @@ static PHP_METHOD(amqp_connection_class, setHost)
639 		return;
640 	}
641
642-	zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("host"), host, host_len TSRMLS_CC);
643+	zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("host"), host, host_len TSRMLS_CC);
644
645 	RETURN_TRUE;
646 }
647@@ -910,7 +910,7 @@ static PHP_METHOD(amqp_connection_class, setPort)
648 		return;
649 	}
650
651-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("port"), port TSRMLS_CC);
652+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("port"), port TSRMLS_CC);
653
654 	RETURN_TRUE;
655 }
656@@ -943,7 +943,7 @@ static PHP_METHOD(amqp_connection_class, setVhost)
657 		return;
658 	}
659
660-	zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("vhost"), vhost, vhost_len TSRMLS_CC);
661+	zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("vhost"), vhost, vhost_len TSRMLS_CC);
662
663 	RETURN_TRUE;
664 }
665@@ -986,7 +986,7 @@ static PHP_METHOD(amqp_connection_class, setTimeout)
666 	/* Get the connection object out of the store */
667 	connection = PHP_AMQP_GET_CONNECTION(getThis());
668
669-	zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), read_timeout TSRMLS_CC);
670+	zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("read_timeout"), read_timeout TSRMLS_CC);
671
672 	if (connection->connection_resource && connection->connection_resource->is_connected) {
673 		if (php_amqp_set_resource_read_timeout(connection->connection_resource, read_timeout TSRMLS_CC) == 0) {
674@@ -1032,7 +1032,7 @@ static PHP_METHOD(amqp_connection_class, setReadTimeout)
675 	/* Get the connection object out of the store */
676 	connection = PHP_AMQP_GET_CONNECTION(getThis());
677
678-	zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), read_timeout TSRMLS_CC);
679+	zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("read_timeout"), read_timeout TSRMLS_CC);
680
681 	if (connection->connection_resource && connection->connection_resource->is_connected) {
682 		if (php_amqp_set_resource_read_timeout(connection->connection_resource, read_timeout TSRMLS_CC) == 0) {
683@@ -1078,7 +1078,7 @@ static PHP_METHOD(amqp_connection_class, setWriteTimeout)
684 	/* Get the connection object out of the store */
685 	connection = PHP_AMQP_GET_CONNECTION(getThis());
686
687-	zend_update_property_double(this_ce, getThis(), ZEND_STRL("write_timeout"), write_timeout TSRMLS_CC);
688+	zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("write_timeout"), write_timeout TSRMLS_CC);
689
690 	if (connection->connection_resource && connection->connection_resource->is_connected) {
691 		if (php_amqp_set_resource_write_timeout(connection->connection_resource, write_timeout TSRMLS_CC) == 0) {
692@@ -1124,7 +1124,7 @@ static PHP_METHOD(amqp_connection_class, setRpcTimeout)
693 	/* Get the connection object out of the store */
694 	connection = PHP_AMQP_GET_CONNECTION(getThis());
695
696-	zend_update_property_double(this_ce, getThis(), ZEND_STRL("rpc_timeout"), rpc_timeout TSRMLS_CC);
697+	zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("rpc_timeout"), rpc_timeout TSRMLS_CC);
698
699 	if (connection->connection_resource && connection->connection_resource->is_connected) {
700 		if (php_amqp_set_resource_rpc_timeout(connection->connection_resource, rpc_timeout TSRMLS_CC) == 0) {
701@@ -1255,7 +1255,7 @@ static PHP_METHOD(amqp_connection_class, setCACert)
702 		return;
703 	}
704
705-	zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("cacert"), str, str_len TSRMLS_CC);
706+	zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("cacert"), str, str_len TSRMLS_CC);
707
708 	RETURN_TRUE;
709 }
710@@ -1279,7 +1279,7 @@ static PHP_METHOD(amqp_connection_class, setCert)
711 		return;
712 	}
713
714-	zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("cert"), str, str_len TSRMLS_CC);
715+	zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("cert"), str, str_len TSRMLS_CC);
716
717 	RETURN_TRUE;
718 }
719@@ -1303,7 +1303,7 @@ static PHP_METHOD(amqp_connection_class, setKey)
720 		return;
721 	}
722
723-	zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("key"), str, str_len TSRMLS_CC);
724+	zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("key"), str, str_len TSRMLS_CC);
725
726 	RETURN_TRUE;
727 }
728@@ -1328,7 +1328,7 @@ static PHP_METHOD(amqp_connection_class, setVerify)
729 		return;
730 	}
731
732-	zend_update_property_bool(this_ce, getThis(), ZEND_STRL("verify"), verify TSRMLS_CC);
733+	zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("verify"), verify TSRMLS_CC);
734
735 	RETURN_TRUE;
736 }
737@@ -1361,7 +1361,7 @@ static PHP_METHOD(amqp_connection_class, setSaslMethod)
738 		return;
739 	}
740
741-	zend_update_property_long(this_ce, getThis(), ZEND_STRL("sasl_method"), method TSRMLS_CC);
742+	zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("sasl_method"), method TSRMLS_CC);
743
744 	RETURN_TRUE;
745 }
746@@ -1385,9 +1385,9 @@ static PHP_METHOD(amqp_connection_class, setConnectionName)
747 		return;
748 	}
749 	if (str == NULL) {
750-		zend_update_property_null(this_ce, getThis(), ZEND_STRL("connection_name") TSRMLS_CC);
751+		zend_update_property_null(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("connection_name") TSRMLS_CC);
752 	} else {
753-		zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("connection_name"), str, str_len TSRMLS_CC);
754+		zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("connection_name"), str, str_len TSRMLS_CC);
755 	}
756
757
758diff --git a/amqp_connection_resource.c b/amqp_connection_resource.c
759index 7e20a5c..b0e065a 100644
760--- a/amqp_connection_resource.c
761+++ b/amqp_connection_resource.c
762@@ -112,15 +112,15 @@ static void php_amqp_close_connection_from_server(amqp_rpc_reply_t reply, char *
763
764 	if (!reply.reply.id) {
765 		PHP_AMQP_G(error_code) = -1;
766-		spprintf(message, 0, "Server connection error: %d, message: %s",
767-				 PHP_AMQP_G(error_code),
768+		spprintf(message, 0, "Server connection error: %ld, message: %s",
769+				 (long)PHP_AMQP_G(error_code),
770 				 "unexpected response"
771 		);
772 	} else {
773 		PHP_AMQP_G(error_code) = m->reply_code;
774 		spprintf(message, 0, "Server connection error: %d, message: %.*s",
775 				 m->reply_code,
776-				 (PHP5to7_param_str_len_type_t) m->reply_text.len,
777+				 (int) m->reply_text.len,
778 				 (char *) m->reply_text.bytes
779 		);
780 	}
781@@ -156,15 +156,15 @@ static void php_amqp_close_channel_from_server(amqp_rpc_reply_t reply, char **me
782
783 	if (!reply.reply.id) {
784 		PHP_AMQP_G(error_code) = -1;
785-		spprintf(message, 0, "Server channel error: %d, message: %s",
786-				 PHP_AMQP_G(error_code),
787+		spprintf(message, 0, "Server channel error: %ld, message: %s",
788+				 (long)PHP_AMQP_G(error_code),
789 				 "unexpected response"
790 		);
791 	} else {
792 		PHP_AMQP_G(error_code) = m->reply_code;
793 		spprintf(message, 0, "Server channel error: %d, message: %.*s",
794 			m->reply_code,
795-			(PHP5to7_param_str_len_type_t) m->reply_text.len,
796+			(int) m->reply_text.len,
797 			(char *)m->reply_text.bytes
798 		);
799 	}
800diff --git a/amqp_decimal.c b/amqp_decimal.c
801index 83c9f20..8fd92c1 100644
802--- a/amqp_decimal.c
803+++ b/amqp_decimal.c
804@@ -53,7 +53,7 @@ static PHP_METHOD(amqp_decimal_class, __construct)
805 	}
806
807 	if (exponent > AMQP_DECIMAL_EXPONENT_MAX) {
808-		zend_throw_exception_ex(amqp_value_exception_class_entry, 0 TSRMLS_CC, "Decimal exponent value must be less than %u.", AMQP_DECIMAL_EXPONENT_MAX);
809+		zend_throw_exception_ex(amqp_value_exception_class_entry, 0 TSRMLS_CC, "Decimal exponent value must be less than %u.", (unsigned)AMQP_DECIMAL_EXPONENT_MAX);
810 		return;
811 	}
812     if (significand < AMQP_DECIMAL_SIGNIFICAND_MIN) {
813@@ -62,12 +62,12 @@ static PHP_METHOD(amqp_decimal_class, __construct)
814     }
815
816     if (significand > AMQP_DECIMAL_SIGNIFICAND_MAX) {
817-        zend_throw_exception_ex(amqp_value_exception_class_entry, 0 TSRMLS_CC, "Decimal significand value must be less than %u.", AMQP_DECIMAL_SIGNIFICAND_MAX);
818+        zend_throw_exception_ex(amqp_value_exception_class_entry, 0 TSRMLS_CC, "Decimal significand value must be less than %u.", (unsigned)AMQP_DECIMAL_SIGNIFICAND_MAX);
819         return;
820     }
821
822-    zend_update_property_long(this_ce, getThis(), ZEND_STRL("exponent"), exponent TSRMLS_CC);
823-    zend_update_property_long(this_ce, getThis(), ZEND_STRL("significand"), significand TSRMLS_CC);
824+    zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("exponent"), exponent TSRMLS_CC);
825+    zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("significand"), significand TSRMLS_CC);
826 }
827 /* }}} */
828
829diff --git a/amqp_envelope.c b/amqp_envelope.c
830index 8127bed..b7a7a45 100644
831--- a/amqp_envelope.c
832+++ b/amqp_envelope.c
833@@ -67,13 +67,13 @@ void convert_amqp_envelope_to_zval(amqp_envelope_t *amqp_envelope, zval *envelop
834     amqp_basic_properties_t *p = &amqp_envelope->message.properties;
835     amqp_message_t *message = &amqp_envelope->message;
836
837-    zend_update_property_stringl(this_ce, envelope, ZEND_STRL("body"), (const char *) message->body.bytes, (PHP5to7_param_str_len_type_t) message->body.len TSRMLS_CC);
838+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL("body"), (const char *) message->body.bytes, (PHP5to7_param_str_len_type_t) message->body.len TSRMLS_CC);
839
840-    zend_update_property_stringl(this_ce, envelope, ZEND_STRL("consumer_tag"), (const char *) amqp_envelope->consumer_tag.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->consumer_tag.len TSRMLS_CC);
841-    zend_update_property_long(this_ce, envelope, ZEND_STRL("delivery_tag"), (PHP5to7_param_long_type_t) amqp_envelope->delivery_tag TSRMLS_CC);
842-    zend_update_property_bool(this_ce, envelope, ZEND_STRL("is_redelivery"), (PHP5to7_param_long_type_t) amqp_envelope->redelivered TSRMLS_CC);
843-    zend_update_property_stringl(this_ce, envelope, ZEND_STRL("exchange_name"), (const char *) amqp_envelope->exchange.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->exchange.len TSRMLS_CC);
844-    zend_update_property_stringl(this_ce, envelope, ZEND_STRL("routing_key"), (const char *) amqp_envelope->routing_key.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->routing_key.len TSRMLS_CC);
845+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL("consumer_tag"), (const char *) amqp_envelope->consumer_tag.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->consumer_tag.len TSRMLS_CC);
846+    zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL("delivery_tag"), (PHP5to7_param_long_type_t) amqp_envelope->delivery_tag TSRMLS_CC);
847+    zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL("is_redelivery"), (PHP5to7_param_long_type_t) amqp_envelope->redelivered TSRMLS_CC);
848+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL("exchange_name"), (const char *) amqp_envelope->exchange.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->exchange.len TSRMLS_CC);
849+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL("routing_key"), (const char *) amqp_envelope->routing_key.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->routing_key.len TSRMLS_CC);
850
851     php_amqp_basic_properties_extract(p, envelope TSRMLS_CC);
852 }
853diff --git a/amqp_exchange.c b/amqp_exchange.c
854index 4f80d3b..4bfe397 100644
855--- a/amqp_exchange.c
856+++ b/amqp_exchange.c
857@@ -65,20 +65,20 @@ static PHP_METHOD(amqp_exchange_class, __construct)
858 	zval *channelObj;
859 	amqp_channel_resource *channel_resource;
860
861-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &channelObj) == FAILURE) {
862+	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &channelObj, amqp_channel_class_entry) == FAILURE) {
863 		return;
864 	}
865
866 	PHP5to7_MAYBE_INIT(arguments);
867 	PHP5to7_ARRAY_INIT(arguments);
868-	zend_update_property(this_ce, getThis(), ZEND_STRL("arguments"), PHP5to7_MAYBE_PTR(arguments) TSRMLS_CC);
869+	zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("arguments"), PHP5to7_MAYBE_PTR(arguments) TSRMLS_CC);
870 	PHP5to7_MAYBE_DESTROY(arguments);
871
872 	channel_resource = PHP_AMQP_GET_CHANNEL_RESOURCE(channelObj);
873 	PHP_AMQP_VERIFY_CHANNEL_RESOURCE(channel_resource, "Could not create exchange.");
874
875-	zend_update_property(this_ce, getThis(), ZEND_STRL("channel"), channelObj TSRMLS_CC);
876-	zend_update_property(this_ce, getThis(), ZEND_STRL("connection"), PHP_AMQP_READ_OBJ_PROP(amqp_channel_class_entry, channelObj, "connection") TSRMLS_CC);
877+	zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("channel"), channelObj TSRMLS_CC);
878+	zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("connection"), PHP_AMQP_READ_OBJ_PROP(amqp_channel_class_entry, channelObj, "connection") TSRMLS_CC);
879 }
880 /* }}} */
881
882@@ -119,7 +119,7 @@ static PHP_METHOD(amqp_exchange_class, setName)
883 	}
884
885 	/* Set the exchange name */
886-	zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("name"), name, name_len TSRMLS_CC);
887+	zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("name"), name, name_len TSRMLS_CC);
888 }
889 /* }}} */
890
891@@ -168,10 +168,10 @@ static PHP_METHOD(amqp_exchange_class, setFlags)
892 	/* Set the flags based on the bitmask we were given */
893 	flagBitmask = flagBitmask ? flagBitmask & PHP_AMQP_EXCHANGE_FLAGS : flagBitmask;
894
895-	zend_update_property_bool(this_ce, getThis(), ZEND_STRL("passive"), IS_PASSIVE(flagBitmask) TSRMLS_CC);
896-	zend_update_property_bool(this_ce, getThis(), ZEND_STRL("durable"), IS_DURABLE(flagBitmask) TSRMLS_CC);
897-	zend_update_property_bool(this_ce, getThis(), ZEND_STRL("auto_delete"), IS_AUTODELETE(flagBitmask) TSRMLS_CC);
898-	zend_update_property_bool(this_ce, getThis(), ZEND_STRL("internal"), IS_INTERNAL(flagBitmask) TSRMLS_CC);
899+	zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("passive"), IS_PASSIVE(flagBitmask) TSRMLS_CC);
900+	zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("durable"), IS_DURABLE(flagBitmask) TSRMLS_CC);
901+	zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("auto_delete"), IS_AUTODELETE(flagBitmask) TSRMLS_CC);
902+	zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("internal"), IS_INTERNAL(flagBitmask) TSRMLS_CC);
903 }
904 /* }}} */
905
906@@ -204,7 +204,7 @@ static PHP_METHOD(amqp_exchange_class, setType)
907 		return;
908 	}
909
910-	zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("type"), type, type_len TSRMLS_CC);
911+	zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("type"), type, type_len TSRMLS_CC);
912 }
913 /* }}} */
914
915@@ -273,7 +273,7 @@ static PHP_METHOD(amqp_exchange_class, setArguments)
916 		return;
917 	}
918
919-	zend_update_property(this_ce, getThis(), ZEND_STRL("arguments"), zvalArguments TSRMLS_CC);
920+	zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("arguments"), zvalArguments TSRMLS_CC);
921
922 	RETURN_TRUE;
923 }
924diff --git a/amqp_queue.c b/amqp_queue.c
925index c13629c..eeba144 100644
926--- a/amqp_queue.c
927+++ b/amqp_queue.c
928@@ -68,20 +68,20 @@ static PHP_METHOD(amqp_queue_class, __construct)
929 	zval *channelObj;
930 	amqp_channel_resource *channel_resource;
931
932-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &channelObj) == FAILURE) {
933+	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &channelObj, amqp_channel_class_entry) == FAILURE) {
934 		return;
935 	}
936
937 	PHP5to7_MAYBE_INIT(arguments);
938 	PHP5to7_ARRAY_INIT(arguments);
939-	zend_update_property(this_ce, getThis(), ZEND_STRL("arguments"), PHP5to7_MAYBE_PTR(arguments) TSRMLS_CC);
940+	zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("arguments"), PHP5to7_MAYBE_PTR(arguments) TSRMLS_CC);
941 	PHP5to7_MAYBE_DESTROY(arguments);
942
943 	channel_resource = PHP_AMQP_GET_CHANNEL_RESOURCE(channelObj);
944 	PHP_AMQP_VERIFY_CHANNEL_RESOURCE(channel_resource, "Could not create queue.");
945
946-	zend_update_property(this_ce, getThis(), ZEND_STRL("channel"), channelObj TSRMLS_CC);
947-	zend_update_property(this_ce, getThis(), ZEND_STRL("connection"), PHP_AMQP_READ_OBJ_PROP(amqp_channel_class_entry, channelObj, "connection") TSRMLS_CC);
948+	zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("channel"), channelObj TSRMLS_CC);
949+	zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("connection"), PHP_AMQP_READ_OBJ_PROP(amqp_channel_class_entry, channelObj, "connection") TSRMLS_CC);
950
951 }
952 /* }}} */
953@@ -122,7 +122,7 @@ static PHP_METHOD(amqp_queue_class, setName)
954 	}
955
956 	/* Set the queue name */
957-	zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("name"), name, name_len TSRMLS_CC);
958+	zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("name"), name, name_len TSRMLS_CC);
959
960 	/* BC */
961 	RETURN_TRUE;
962@@ -175,10 +175,10 @@ static PHP_METHOD(amqp_queue_class, setFlags)
963 	/* Set the flags based on the bitmask we were given */
964 	flagBitmask = flagBitmask ? flagBitmask & PHP_AMQP_QUEUE_FLAGS : flagBitmask;
965
966-	zend_update_property_bool(this_ce, getThis(), ZEND_STRL("passive"), IS_PASSIVE(flagBitmask) TSRMLS_CC);
967-	zend_update_property_bool(this_ce, getThis(), ZEND_STRL("durable"), IS_DURABLE(flagBitmask) TSRMLS_CC);
968-	zend_update_property_bool(this_ce, getThis(), ZEND_STRL("exclusive"), IS_EXCLUSIVE(flagBitmask) TSRMLS_CC);
969-	zend_update_property_bool(this_ce, getThis(), ZEND_STRL("auto_delete"), IS_AUTODELETE(flagBitmask) TSRMLS_CC);
970+	zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("passive"), IS_PASSIVE(flagBitmask) TSRMLS_CC);
971+	zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("durable"), IS_DURABLE(flagBitmask) TSRMLS_CC);
972+	zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("exclusive"), IS_EXCLUSIVE(flagBitmask) TSRMLS_CC);
973+	zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("auto_delete"), IS_AUTODELETE(flagBitmask) TSRMLS_CC);
974
975 	/* BC */
976 	RETURN_TRUE;
977@@ -250,7 +250,7 @@ static PHP_METHOD(amqp_queue_class, setArguments)
978 		return;
979 	}
980
981-	zend_update_property(this_ce, getThis(), ZEND_STRL("arguments"), zvalArguments TSRMLS_CC);
982+	zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("arguments"), zvalArguments TSRMLS_CC);
983
984 	RETURN_TRUE;
985 }
986@@ -342,7 +342,7 @@ static PHP_METHOD(amqp_queue_class, declareQueue)
987
988 	/* Set the queue name, in case it is an autogenerated queue name */
989 	name = php_amqp_type_amqp_bytes_to_char(r->queue);
990-	zend_update_property_string(this_ce, getThis(), ZEND_STRL("name"), name TSRMLS_CC);
991+	zend_update_property_string(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("name"), name TSRMLS_CC);
992 	efree(name);
993
994 	php_amqp_maybe_release_buffers_on_channel(channel_resource->connection_resource, channel_resource);
995@@ -525,7 +525,7 @@ static PHP_METHOD(amqp_queue_class, consume)
996 	}
997
998 	zval *channel_zv = PHP_AMQP_READ_THIS_PROP("channel");
999-	zval *consumers = zend_read_property(amqp_channel_class_entry, channel_zv, ZEND_STRL("consumers"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);
1000+	zval *consumers = zend_read_property(amqp_channel_class_entry, PHP5to8_OBJ_PROP(channel_zv), ZEND_STRL("consumers"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);
1001
1002 	if (IS_ARRAY != Z_TYPE_P(consumers)) {
1003 		zend_throw_exception(amqp_queue_exception_class_entry, "Invalid channel consumers, forgot to call channel constructor?", 0 TSRMLS_CC);
1004@@ -594,7 +594,7 @@ static PHP_METHOD(amqp_queue_class, consume)
1005 		efree(key);
1006
1007 		/* Set the consumer tag name, in case it is an autogenerated consumer tag name */
1008-		zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("consumer_tag"), (const char *) r->consumer_tag.bytes, (PHP5to7_param_str_len_type_t) r->consumer_tag.len TSRMLS_CC);
1009+		zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("consumer_tag"), (const char *) r->consumer_tag.bytes, (PHP5to7_param_str_len_type_t) r->consumer_tag.len TSRMLS_CC);
1010 	}
1011
1012 	if (!ZEND_FCI_INITIALIZED(fci)) {
1013@@ -674,7 +674,7 @@ static PHP_METHOD(amqp_queue_class, consume)
1014 		current_channel_zv = current_channel_resource->parent->this_ptr;
1015 #endif
1016
1017-		consumers = zend_read_property(amqp_channel_class_entry, PHP5to7_MAYBE_PTR(current_channel_zv), ZEND_STRL("consumers"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);
1018+		consumers = zend_read_property(amqp_channel_class_entry, PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PTR(current_channel_zv)), ZEND_STRL("consumers"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);
1019
1020 		if (IS_ARRAY != Z_TYPE_P(consumers)) {
1021 			zend_throw_exception(amqp_queue_exception_class_entry, "Invalid channel consumers, forgot to call channel constructor?", 0 TSRMLS_CC);
1022@@ -689,8 +689,8 @@ static PHP_METHOD(amqp_queue_class, consume)
1023 			PHP5to7_zval_t exception PHP5to7_MAYBE_SET_TO_NULL;
1024 			PHP5to7_MAYBE_INIT(exception);
1025 			object_init_ex(PHP5to7_MAYBE_PTR(exception), amqp_envelope_exception_class_entry);
1026-		    zend_update_property_string(zend_exception_get_default(TSRMLS_C), PHP5to7_MAYBE_PTR(exception),  ZEND_STRL("message"), "Orphaned envelope" TSRMLS_CC);
1027-			zend_update_property(amqp_envelope_exception_class_entry, PHP5to7_MAYBE_PTR(exception), ZEND_STRL("envelope"), PHP5to7_MAYBE_PTR(message) TSRMLS_CC);
1028+		    zend_update_property_string(zend_exception_get_default(TSRMLS_C), PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PTR(exception)),  ZEND_STRL("message"), "Orphaned envelope" TSRMLS_CC);
1029+			zend_update_property(amqp_envelope_exception_class_entry, PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PTR(exception)), ZEND_STRL("envelope"), PHP5to7_MAYBE_PTR(message) TSRMLS_CC);
1030
1031 			zend_throw_exception_object(PHP5to7_MAYBE_PTR(exception) TSRMLS_CC);
1032
1033@@ -946,7 +946,7 @@ static PHP_METHOD(amqp_queue_class, cancel)
1034 	}
1035
1036 	zval *channel_zv = PHP_AMQP_READ_THIS_PROP("channel");
1037-	zval *consumers = zend_read_property(amqp_channel_class_entry, channel_zv, ZEND_STRL("consumers"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);
1038+	zval *consumers = zend_read_property(amqp_channel_class_entry, PHP5to8_OBJ_PROP(channel_zv), ZEND_STRL("consumers"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);
1039 	zend_bool has_consumer_tag = (zend_bool) (IS_STRING == Z_TYPE_P(PHP_AMQP_READ_THIS_PROP("consumer_tag")));
1040
1041 	if (IS_ARRAY != Z_TYPE_P(consumers)) {
1042@@ -977,8 +977,8 @@ static PHP_METHOD(amqp_queue_class, cancel)
1043 		return;
1044 	}
1045
1046-	if (!consumer_tag_len || has_consumer_tag && strcmp(consumer_tag, PHP_AMQP_READ_THIS_PROP_STR("consumer_tag")) != 0) {
1047-		zend_update_property_null(this_ce, getThis(), ZEND_STRL("consumer_tag") TSRMLS_CC);
1048+	if (!consumer_tag_len || (has_consumer_tag && strcmp(consumer_tag, PHP_AMQP_READ_THIS_PROP_STR("consumer_tag")) != 0)) {
1049+		zend_update_property_null(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("consumer_tag") TSRMLS_CC);
1050 	}
1051
1052     char *key;
1053diff --git a/amqp_timestamp.c b/amqp_timestamp.c
1054index d9eec39..ed07ab6 100644
1055--- a/amqp_timestamp.c
1056+++ b/amqp_timestamp.c
1057@@ -61,7 +61,7 @@ static PHP_METHOD(amqp_timestamp_class, __construct)
1058 	#if PHP_MAJOR_VERSION >= 7
1059 		zend_string *str;
1060 		str = _php_math_number_format_ex(timestamp, 0, "", 0, "", 0);
1061-		zend_update_property_str(this_ce, getThis(), ZEND_STRL("timestamp"), str);
1062+		zend_update_property_str(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("timestamp"), str);
1063         zend_string_delref(str);
1064 	#else
1065 		char *str;
1066@@ -104,7 +104,11 @@ ZEND_END_ARG_INFO()
1067 ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_timestamp_class_getTimestamp, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
1068 ZEND_END_ARG_INFO()
1069
1070+#if PHP_MAJOR_VERSION < 8
1071 ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_timestamp_class_toString, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
1072+#else
1073+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_amqp_timestamp_class_toString, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, IS_STRING, 0)
1074+#endif
1075 ZEND_END_ARG_INFO()
1076
1077 zend_function_entry amqp_timestamp_class_functions[] = {
1078diff --git a/amqp_type.c b/amqp_type.c
1079index fb87727..5f1ab91 100644
1080--- a/amqp_type.c
1081+++ b/amqp_type.c
1082@@ -250,7 +250,7 @@ zend_bool php_amqp_type_internal_convert_php_to_amqp_field_value(zval *value, am
1083 			if (instanceof_function(Z_OBJCE_P(value), amqp_timestamp_class_entry TSRMLS_CC)) {
1084                 PHP5to7_zval_t result_zv PHP5to7_MAYBE_SET_TO_NULL;
1085
1086-                zend_call_method_with_0_params(PHP5to7_MAYBE_PARAM_PTR(value), amqp_timestamp_class_entry, NULL, "gettimestamp", &result_zv);
1087+                zend_call_method_with_0_params(PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PARAM_PTR(value)), amqp_timestamp_class_entry, NULL, "gettimestamp", &result_zv);
1088
1089                 field->kind = AMQP_FIELD_KIND_TIMESTAMP;
1090                 field->value.u64 = strtoimax(Z_STRVAL(PHP5to7_MAYBE_DEREF(result_zv)), NULL, 10);
1091@@ -262,11 +262,11 @@ zend_bool php_amqp_type_internal_convert_php_to_amqp_field_value(zval *value, am
1092 				field->kind = AMQP_FIELD_KIND_DECIMAL;
1093 				PHP5to7_zval_t result_zv PHP5to7_MAYBE_SET_TO_NULL;
1094
1095-				zend_call_method_with_0_params(PHP5to7_MAYBE_PARAM_PTR(value), amqp_decimal_class_entry, NULL, "getexponent", &result_zv);
1096+				zend_call_method_with_0_params(PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PARAM_PTR(value)), amqp_decimal_class_entry, NULL, "getexponent", &result_zv);
1097 				field->value.decimal.decimals = (uint8_t)Z_LVAL(PHP5to7_MAYBE_DEREF(result_zv));
1098 				PHP5to7_MAYBE_DESTROY(result_zv);
1099
1100-				zend_call_method_with_0_params(PHP5to7_MAYBE_PARAM_PTR(value), amqp_decimal_class_entry, NULL, "getsignificand", &result_zv);
1101+				zend_call_method_with_0_params(PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PARAM_PTR(value)), amqp_decimal_class_entry, NULL, "getsignificand", &result_zv);
1102 				field->value.decimal.value = (uint32_t)Z_LVAL(PHP5to7_MAYBE_DEREF(result_zv));
1103
1104 				PHP5to7_MAYBE_DESTROY(result_zv);
1105diff --git a/php5_support.h b/php5_support.h
1106index 5c57620..25c2d96 100644
1107--- a/php5_support.h
1108+++ b/php5_support.h
1109@@ -109,6 +109,8 @@ typedef zend_rsrc_list_entry PHP5to7_zend_resource_le_t;
1110 #define ZEND_ULONG_FMT "%" PRIu64
1111 #define PHP5to7_ZEND_ACC_FINAL_CLASS ZEND_ACC_FINAL_CLASS
1112
1113+#define PHP5to8_OBJ_PROP(zv) (zv)
1114+
1115 #endif //PHP_AMQP_PHP5_SUPPORT_H
1116
1117 /*
1118diff --git a/php7_support.h b/php7_support.h
1119index c9e8f5b..0dbd6b2 100644
1120--- a/php7_support.h
1121+++ b/php7_support.h
1122@@ -101,15 +101,24 @@ typedef zval PHP5to7_zend_resource_le_t;
1123
1124 #define PHP5to7_ZEND_ACC_FINAL_CLASS ZEND_ACC_FINAL
1125
1126+
1127 /* Small change to let it build after a major internal change for php8.0
1128  * More info:
1129  * https://github.com/php/php-src/blob/php-8.0.0alpha3/UPGRADING.INTERNALS#L47
1130  */
1131 #if PHP_MAJOR_VERSION >= 8
1132+
1133 # define TSRMLS_DC
1134 # define TSRMLS_D
1135 # define TSRMLS_CC
1136 # define TSRMLS_C
1137+
1138+#define PHP5to8_OBJ_PROP(zv) Z_OBJ_P(zv)
1139+
1140+#else
1141+
1142+#define PHP5to8_OBJ_PROP(zv) (zv)
1143+
1144 # endif
1145
1146 #endif //PHP_AMQP_PHP7_SUPPORT_H
1147diff --git a/php_amqp.h b/php_amqp.h
1148index 752edd7..686741d 100644
1149--- a/php_amqp.h
1150+++ b/php_amqp.h
1151@@ -221,14 +221,14 @@ struct _amqp_connection_object {
1152 #define PHP_AMQP_NOPARAMS() if (zend_parse_parameters_none() == FAILURE) { return; }
1153
1154 #define PHP_AMQP_RETURN_THIS_PROP(prop_name) \
1155-    zval * _zv = zend_read_property(this_ce, getThis(), ZEND_STRL(prop_name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC); \
1156+    zval * _zv = zend_read_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(prop_name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC); \
1157     RETURN_ZVAL(_zv, 1, 0);
1158
1159-#define PHP_AMQP_READ_OBJ_PROP(cls, obj, name) zend_read_property((cls), (obj), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)
1160+#define PHP_AMQP_READ_OBJ_PROP(cls, obj, name) zend_read_property((cls), PHP5to8_OBJ_PROP(obj), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)
1161 #define PHP_AMQP_READ_OBJ_PROP_DOUBLE(cls, obj, name) Z_DVAL_P(PHP_AMQP_READ_OBJ_PROP((cls), (obj), (name)))
1162
1163-#define PHP_AMQP_READ_THIS_PROP_CE(name, ce) zend_read_property((ce), getThis(), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)
1164-#define PHP_AMQP_READ_THIS_PROP(name) zend_read_property(this_ce, getThis(), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)
1165+#define PHP_AMQP_READ_THIS_PROP_CE(name, ce) zend_read_property((ce), PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)
1166+#define PHP_AMQP_READ_THIS_PROP(name) zend_read_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)
1167 #define PHP_AMQP_READ_THIS_PROP_BOOL(name) Z_BVAL_P(PHP_AMQP_READ_THIS_PROP(name))
1168 #define PHP_AMQP_READ_THIS_PROP_STR(name) Z_STRVAL_P(PHP_AMQP_READ_THIS_PROP(name))
1169 #define PHP_AMQP_READ_THIS_PROP_STRLEN(name) (Z_TYPE_P(PHP_AMQP_READ_THIS_PROP(name)) == IS_STRING ? Z_STRLEN_P(PHP_AMQP_READ_THIS_PROP(name)) : 0)
1170diff --git a/tests/amqptimestamp.phpt b/tests/amqptimestamp.phpt
1171index 9835883..6424f8b 100644
1172--- a/tests/amqptimestamp.phpt
1173+++ b/tests/amqptimestamp.phpt
1174@@ -2,7 +2,7 @@
1175 AMQPTimestamp
1176 --SKIPIF--
1177 <?php
1178-if (!extension_loaded("amqp") || version_compare(PHP_VERSION, '5.3', '<')) {
1179+if (!extension_loaded("amqp") || version_compare(PHP_VERSION, '5.3', '<') || version_compare(PHP_VERSION, '8.0', '>')) {
1180   print "skip";
1181 }
1182 --FILE--
1183@@ -52,4 +52,4 @@ bool(true)
1184 string(20) "18446744073709551616"
1185 string(1) "0"
1186
1187-==END==
1188\ No newline at end of file
1189+==END==
1190diff --git a/tests/amqptimestamp_php8.phpt b/tests/amqptimestamp_php8.phpt
1191new file mode 100644
1192index 0000000..dabecc5
1193--- /dev/null
1194+++ b/tests/amqptimestamp_php8.phpt
1195@@ -0,0 +1,60 @@
1196+--TEST--
1197+AMQPTimestamp
1198+--SKIPIF--
1199+<?php
1200+if (!extension_loaded("amqp") || version_compare(PHP_VERSION, '8.0', '<')) {
1201+  print "skip";
1202+}
1203+--FILE--
1204+<?php
1205+
1206+$timestamp = new AMQPTimestamp(100000);
1207+var_dump($timestamp->getTimestamp(), (string) $timestamp);
1208+
1209+$timestamp = new AMQPTimestamp(100000.1);
1210+var_dump($timestamp->getTimestamp(), (string) $timestamp);
1211+
1212+try {
1213+	new AMQPTimestamp();
1214+} catch(ArgumentCountError $e) {
1215+	echo $e->getMessage() . "\n";
1216+}
1217+try {
1218+	new AMQPTimestamp("string");
1219+} catch(TypeError $e) {
1220+	echo $e->getMessage() . "\n";
1221+}
1222+
1223+try {
1224+    new AMQPTimestamp(AMQPTimestamp::MIN - 1);
1225+} catch (AMQPValueException $e) {
1226+    echo $e->getMessage() . "\n";
1227+}
1228+
1229+try {
1230+    new AMQPTimestamp(INF);
1231+} catch (AMQPValueException $e) {
1232+    echo $e->getMessage() . "\n";
1233+}
1234+
1235+var_dump((new ReflectionClass("AMQPTimestamp"))->isFinal());
1236+
1237+var_dump(AMQPTimestamp::MAX);
1238+var_dump(AMQPTimestamp::MIN);
1239+?>
1240+
1241+==END==
1242+--EXPECTF--
1243+string(6) "100000"
1244+string(6) "100000"
1245+string(6) "100000"
1246+string(6) "100000"
1247+AMQPTimestamp::__construct() expects exactly 1 parameter, 0 given
1248+AMQPTimestamp::__construct(): Argument #1 ($timestamp) must be of type float, string given
1249+The timestamp parameter must be greater than 0.
1250+The timestamp parameter must be less than 18446744073709551616.
1251+bool(true)
1252+string(20) "18446744073709551616"
1253+string(1) "0"
1254+
1255+==END==
1256diff --git a/tests/bug_61533.phpt b/tests/bug_61533.phpt
1257index ecb5213..f53c315 100644
1258--- a/tests/bug_61533.phpt
1259+++ b/tests/bug_61533.phpt
1260@@ -21,4 +21,4 @@ try {
1261
1262 ?>
1263 --EXPECTF--
1264-%s: Argument 1 passed to AMQPQueue::__construct() must be an instance of AMQPChannel, instance of AMQPConnection given%s
1265+%s AMQPChannel%s AMQPConnection%s
1266