Fixed clone_obj for PHP8. (#8252)

PHP8 has a different method signature for clone_obj that takes a
zend_object* instead of a zval*.
diff --git a/php/ext/google/protobuf/array.c b/php/ext/google/protobuf/array.c
index 36ebb8d..3a2f734 100644
--- a/php/ext/google/protobuf/array.c
+++ b/php/ext/google/protobuf/array.c
@@ -118,8 +118,8 @@
  *
  *   $rf2 = clone $rf1;
  */
-static zend_object *RepeatedField_clone_obj(zval *object) {
-  RepeatedField* intern = (RepeatedField*)Z_OBJ_P(object);
+static zend_object *RepeatedField_clone_obj(PROTO_VAL *object) {
+  RepeatedField* intern = PROTO_VAL_P(object);
   upb_arena *arena = Arena_Get(&intern->arena);
   upb_array *clone = upb_array_new(arena, intern->type.type);
   size_t n = upb_array_size(intern->array);
diff --git a/php/ext/google/protobuf/map.c b/php/ext/google/protobuf/map.c
index 3df3ed3..babd638 100644
--- a/php/ext/google/protobuf/map.c
+++ b/php/ext/google/protobuf/map.c
@@ -133,8 +133,8 @@
  *
  *   $map2 = clone $map1;
  */
-static zend_object *MapField_clone_obj(zval *object) {
-  MapField* intern = (MapField*)Z_OBJ_P(object);
+static zend_object *MapField_clone_obj(PROTO_VAL *object) {
+  MapField* intern = PROTO_VAL_P(object);
   upb_arena *arena = Arena_Get(&intern->arena);
   upb_map *clone =
       upb_map_new(arena, intern->type.key_type, intern->type.val_type.type);
diff --git a/php/ext/google/protobuf/message.c b/php/ext/google/protobuf/message.c
index 9016d36..7f27670 100644
--- a/php/ext/google/protobuf/message.c
+++ b/php/ext/google/protobuf/message.c
@@ -259,7 +259,7 @@
 static int Message_has_property(PROTO_VAL *obj, PROTO_STR *member,
                                 int has_set_exists,
                                 void **cache_slot) {
-  Message* intern = PROTO_MSG_P(obj);
+  Message* intern = PROTO_VAL_P(obj);
   const upb_fielddef *f = get_field(intern, member);
 
   if (!f) return 0;
@@ -294,7 +294,7 @@
  */
 static void Message_unset_property(PROTO_VAL *obj, PROTO_STR *member,
                                    void **cache_slot) {
-  Message* intern = PROTO_MSG_P(obj);
+  Message* intern = PROTO_VAL_P(obj);
   const upb_fielddef *f = get_field(intern, member);
 
   if (!f) return;
@@ -331,7 +331,7 @@
  */
 static zval *Message_read_property(PROTO_VAL *obj, PROTO_STR *member,
                                    int type, void **cache_slot, zval *rv) {
-  Message* intern = PROTO_MSG_P(obj);
+  Message* intern = PROTO_VAL_P(obj);
   const upb_fielddef *f = get_field(intern, member);
 
   if (!f) return NULL;
@@ -362,7 +362,7 @@
  */
 static PROTO_RETURN_VAL Message_write_property(
     PROTO_VAL *obj, PROTO_STR *member, zval *val, void **cache_slot) {
-  Message* intern = PROTO_MSG_P(obj);
+  Message* intern = PROTO_VAL_P(obj);
   const upb_fielddef *f = get_field(intern, member);
 
   if (f && Message_set(intern, f, val)) {
@@ -400,8 +400,8 @@
  *
  *   $msg2 = clone $msg;
  */
-static zend_object *Message_clone_obj(zval *object) {
-  Message* intern = PROTO_MSG_P(object);
+static zend_object *Message_clone_obj(PROTO_VAL *object) {
+  Message* intern = PROTO_VAL_P(object);
   upb_msg *clone = upb_msg_new(intern->desc->msgdef, Arena_Get(&intern->arena));
 
   // TODO: copy unknown fields?
diff --git a/php/ext/google/protobuf/protobuf.h b/php/ext/google/protobuf/protobuf.h
index 322567e..2325282 100644
--- a/php/ext/google/protobuf/protobuf.h
+++ b/php/ext/google/protobuf/protobuf.h
@@ -58,13 +58,13 @@
 #if PHP_VERSION_ID < 80000
 #define PROTO_VAL zval
 #define PROTO_STR zval
-#define PROTO_MSG_P(obj) (Message*)Z_OBJ_P(obj)
+#define PROTO_VAL_P(obj) Z_OBJ_P(obj)
 #define PROTO_STRVAL_P(obj) Z_STRVAL_P(obj)
 #define PROTO_STRLEN_P(obj) Z_STRLEN_P(obj)
 #else
 #define PROTO_VAL zend_object
 #define PROTO_STR zend_string
-#define PROTO_MSG_P(obj) (Message*)(obj)
+#define PROTO_VAL_P(obj) (void*)(obj)
 #define PROTO_STRVAL_P(obj) ZSTR_VAL(obj)
 #define PROTO_STRLEN_P(obj) ZSTR_LEN(obj)
 #endif