Skip to content
This repository was archived by the owner on Jul 7, 2018. It is now read-only.

Commit 0b68118

Browse files
authored
Merge pull request #22 from pinepain/fix-php-7.2
Fix PHP 7.2 compatibility
2 parents 339ee02 + 6befe05 commit 0b68118

File tree

3 files changed

+32
-11
lines changed

3 files changed

+32
-11
lines changed

php_ref.h

+21
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,27 @@ extern zend_module_entry php_ref_module_entry;
4141
# define PHP_REF_API
4242
#endif
4343

44+
45+
// Add zend_type support (new since PHP 7.2)
46+
#ifdef ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX
47+
#define PHP_REF_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(name, return_reference, required_num_args, classname, allow_null) \
48+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(name, return_reference, required_num_args, classname, allow_null)
49+
50+
#define PHP_REF_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, allow_null) \
51+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, allow_null)
52+
#else
53+
#define PHP_REF_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(name, return_reference, required_num_args, classname, allow_null) \
54+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, IS_OBJECT, #classname, allow_null)
55+
56+
#define PHP_REF_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, allow_null) \
57+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, NULL, allow_null)
58+
#endif
59+
60+
#if PHP_VERSION_ID < 70100
61+
#define zend_get_executed_scope() EG(scope)
62+
#endif
63+
64+
4465
#ifdef ZTS
4566
#include "TSRM.h"
4667
#endif

php_ref_functions.c

+10-10
Original file line numberDiff line numberDiff line change
@@ -208,43 +208,43 @@ PHP_FUNCTION(is_obj_destructor_called)
208208
}
209209

210210

211-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(refcounted_arg, ZEND_RETURN_VALUE, 1, _IS_BOOL, NULL, 0)
211+
PHP_REF_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(refcounted_arg, ZEND_RETURN_VALUE, 1, _IS_BOOL, 0)
212212
ZEND_ARG_INFO(0, value)
213213
ZEND_END_ARG_INFO()
214214

215-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(refcount_arg, ZEND_RETURN_VALUE, 1, IS_LONG, NULL, 0)
215+
PHP_REF_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(refcount_arg, ZEND_RETURN_VALUE, 1, IS_LONG, 0)
216216
ZEND_ARG_INFO(0, value)
217217
ZEND_END_ARG_INFO()
218218

219-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(softrefcounted_arg, ZEND_RETURN_VALUE, 1, _IS_BOOL, NULL, 0)
219+
PHP_REF_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(softrefcounted_arg, ZEND_RETURN_VALUE, 1, _IS_BOOL, 0)
220220
ZEND_ARG_INFO(0, object)
221221
ZEND_END_ARG_INFO()
222222

223-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(softrefcount_arg, ZEND_RETURN_VALUE, 1, IS_LONG, NULL, 0)
223+
PHP_REF_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(softrefcount_arg, ZEND_RETURN_VALUE, 1, IS_LONG, 0)
224224
ZEND_ARG_INFO(0, object)
225225
ZEND_END_ARG_INFO()
226226

227-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(softrefs_arg, ZEND_RETURN_VALUE, 1, IS_ARRAY, NULL, 0)
227+
PHP_REF_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(softrefs_arg, ZEND_RETURN_VALUE, 1, IS_ARRAY, 0)
228228
ZEND_ARG_INFO(0, object)
229229
ZEND_END_ARG_INFO()
230230

231-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(weakrefcounted_arg, ZEND_RETURN_VALUE, 1, _IS_BOOL, NULL, 0)
231+
PHP_REF_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(weakrefcounted_arg, ZEND_RETURN_VALUE, 1, _IS_BOOL, 0)
232232
ZEND_ARG_INFO(0, object)
233233
ZEND_END_ARG_INFO()
234234

235-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(weakrefcount_arg, ZEND_RETURN_VALUE, 1, IS_LONG, NULL, 0)
235+
PHP_REF_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(weakrefcount_arg, ZEND_RETURN_VALUE, 1, IS_LONG, 0)
236236
ZEND_ARG_INFO(0, object)
237237
ZEND_END_ARG_INFO()
238238

239-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(weakrefs_arg, ZEND_RETURN_VALUE, 1, IS_ARRAY, NULL, 0)
239+
PHP_REF_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(weakrefs_arg, ZEND_RETURN_VALUE, 1, IS_ARRAY, 0)
240240
ZEND_ARG_INFO(0, object)
241241
ZEND_END_ARG_INFO()
242242

243-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(object_handle_arg, ZEND_RETURN_VALUE, 1, IS_LONG, NULL, 0)
243+
PHP_REF_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(object_handle_arg, ZEND_RETURN_VALUE, 1, IS_LONG, 0)
244244
ZEND_ARG_INFO(0, object)
245245
ZEND_END_ARG_INFO()
246246

247-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(is_obj_destructor_called_arg, ZEND_RETURN_VALUE, 1, _IS_BOOL, NULL, 0)
247+
PHP_REF_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(is_obj_destructor_called_arg, ZEND_RETURN_VALUE, 1, _IS_BOOL, 0)
248248
ZEND_ARG_INFO(0, object)
249249
ZEND_END_ARG_INFO()
250250

php_ref_reference.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -644,7 +644,7 @@ ZEND_END_ARG_INFO()
644644
ZEND_BEGIN_ARG_INFO_EX(arginfo_ref_reference_get, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
645645
ZEND_END_ARG_INFO()
646646

647-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ref_reference_valid, ZEND_RETURN_VALUE, 0, _IS_BOOL, NULL, 0)
647+
PHP_REF_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ref_reference_valid, ZEND_RETURN_VALUE, 0, _IS_BOOL, 0)
648648
ZEND_END_ARG_INFO()
649649

650650
ZEND_BEGIN_ARG_INFO_EX(arginfo_ref_reference_notifier, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)

0 commit comments

Comments
 (0)