summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/tests/bug71428.3.phpt11
-rw-r--r--Zend/zend_inheritance.c2
2 files changed, 13 insertions, 0 deletions
diff --git a/Zend/tests/bug71428.3.phpt b/Zend/tests/bug71428.3.phpt
new file mode 100644
index 0000000000..2f400e5952
--- /dev/null
+++ b/Zend/tests/bug71428.3.phpt
@@ -0,0 +1,11 @@
+--TEST--
+bug #71428: Validation type inheritance with = NULL
+--FILE--
+<?php
+class A { }
+class B { public function m(A $a = NULL, $n) { echo "B.m";} };
+class C extends B { public function m(A $a , $n) { echo "C.m";} };
+?>
+--EXPECTF--
+Warning: Declaration of C::m(A $a, $n) should be compatible with B::m(A $a = NULL, $n) in %sbug71428.3.php on line 4
+
diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c
index b52f45487c..1ea38a16af 100644
--- a/Zend/zend_inheritance.c
+++ b/Zend/zend_inheritance.c
@@ -488,6 +488,8 @@ static ZEND_COLD zend_string *zend_get_function_declaration(const zend_function
} else {
smart_str_appends(&str, "NULL");
}
+ } else if (arg_info->type_hint && arg_info->allow_null) {
+ smart_str_appends(&str, " = NULL");
}
if (++i < num_args) {