From 3dc962b9f765f5f4a7f8c4fa93f55fee8dad84ca Mon Sep 17 00:00:00 2001 From: Daniel Scherzer Date: Tue, 12 Aug 2025 03:15:18 -0700 Subject: [PATCH] [RFC] Deprecate returning null from __debugInfo() (#19455) RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_debuginfo_returning_null --- Zend/tests/debug_info/debug_info.phpt | 2 ++ .../debug_info/recursion_return_null.phpt | 31 +++++++++++++++++++ Zend/zend_object_handlers.c | 2 ++ 3 files changed, 35 insertions(+) create mode 100644 Zend/tests/debug_info/recursion_return_null.phpt diff --git a/Zend/tests/debug_info/debug_info.phpt b/Zend/tests/debug_info/debug_info.phpt index 6f559eb40b7..bff5876777b 100644 --- a/Zend/tests/debug_info/debug_info.phpt +++ b/Zend/tests/debug_info/debug_info.phpt @@ -36,5 +36,7 @@ object(Foo)#%d (3) { ["c":"Foo":private]=> int(3) } + +Deprecated: Returning null from Bar::__debugInfo() is deprecated, return an empty array instead in %s on line %d object(Bar)#%d (0) { } diff --git a/Zend/tests/debug_info/recursion_return_null.phpt b/Zend/tests/debug_info/recursion_return_null.phpt new file mode 100644 index 00000000000..b6ca9c824cb --- /dev/null +++ b/Zend/tests/debug_info/recursion_return_null.phpt @@ -0,0 +1,31 @@ +--TEST-- +Testing __debugInfo() magic method +--FILE-- + +--EXPECTF-- +in handler + +Deprecated: Returning null from Foo::__debugInfo() is deprecated, return an empty array instead in %s on line %d +object(Foo)#3 (0) { +} +object(Foo)#2 (0) { +} diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index a3f852abc80..cca69e5d792 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -223,6 +223,8 @@ ZEND_API HashTable *zend_std_get_debug_info(zend_object *object, int *is_temp) / return Z_ARRVAL(retval); } } else if (Z_TYPE(retval) == IS_NULL) { + zend_error(E_DEPRECATED, "Returning null from %s::__debugInfo() is deprecated, return an empty array instead", + ZSTR_VAL(ce->name)); *is_temp = 1; ht = zend_new_array(0); return ht;