From 20fdd47921f423728b409fd0ae0106dab9c34573 Mon Sep 17 00:00:00 2001 From: Aaron Piotrowski Date: Tue, 16 Aug 2016 11:28:33 -0500 Subject: [PATCH] Append \ to class name returned from ReflectionType::__toString() --- ext/reflection/php_reflection.c | 8 ++++++++ ext/reflection/tests/ReflectionNamedType.phpt | 6 +++--- ext/reflection/tests/ReflectionType_001.phpt | 18 +++++++++--------- ext/reflection/tests/ReflectionType_002.phpt | 4 ++-- .../tests/ReflectionType_possible_types.phpt | 2 +- 5 files changed, 23 insertions(+), 15 deletions(-) diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 82d76457da..df15efd077 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -3037,6 +3037,14 @@ ZEND_METHOD(reflection_type, __toString) str = reflection_type_name(param); + if (param->arg_info->type_hint == IS_OBJECT + && !zend_string_equals_literal_ci(param->arg_info->class_name, "self") + && !zend_string_equals_literal_ci(param->arg_info->class_name, "parent")) { + str = zend_string_extend(str, ZSTR_LEN(str) + 1, 0); + memmove(ZSTR_VAL(str) + 1, ZSTR_VAL(str), ZSTR_LEN(str) + 1); + ZSTR_VAL(str)[0] = '\\'; + } + if (param->arg_info->allow_null) { str = zend_string_extend(str, ZSTR_LEN(str) + 1, 0); memmove(ZSTR_VAL(str) + 1, ZSTR_VAL(str), ZSTR_LEN(str) + 1); diff --git a/ext/reflection/tests/ReflectionNamedType.phpt b/ext/reflection/tests/ReflectionNamedType.phpt index 1e8f55ac9d..1ce1222216 100644 --- a/ext/reflection/tests/ReflectionNamedType.phpt +++ b/ext/reflection/tests/ReflectionNamedType.phpt @@ -32,10 +32,10 @@ var_dump((string) $return); ?> --EXPECTF-- string(11) "Traversable" -string(12) "?Traversable" +string(13) "?\Traversable" string(6) "string" string(7) "?string" string(4) "Test" -string(5) "?Test" +string(6) "?\Test" string(4) "Test" -string(5) "?Test" +string(6) "?\Test" \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionType_001.phpt b/ext/reflection/tests/ReflectionType_001.phpt index a317566887..c0ae24490c 100644 --- a/ext/reflection/tests/ReflectionType_001.phpt +++ b/ext/reflection/tests/ReflectionType_001.phpt @@ -79,7 +79,7 @@ foreach ([ bool(true) bool(false) bool(false) -string(8) "stdClass" +string(9) "\stdClass" ** Function 0 - Parameter 1 bool(true) bool(false) @@ -94,7 +94,7 @@ string(8) "callable" bool(true) bool(true) bool(false) -string(9) "?stdClass" +string(10) "?\stdClass" ** Function 0 - Parameter 4 bool(false) ** Function 0 - Parameter 5 @@ -121,19 +121,19 @@ string(5) "float" bool(true) bool(false) bool(false) -string(11) "NotExisting" +string(12) "\NotExisting" ** Function 1 - Parameter 0 bool(true) bool(false) bool(false) -string(4) "Test" +string(5) "\Test" *** methods ** Method 0 - parameter 0 bool(true) bool(false) bool(false) -string(10) "SplSubject" +string(11) "\SplSubject" ** Method 1 - parameter 0 bool(true) bool(false) @@ -148,7 +148,7 @@ string(6) "parent" bool(true) bool(false) bool(false) -string(4) "Test" +string(5) "\Test" *** return types ** Function/method return type 0 @@ -157,7 +157,7 @@ bool(false) bool(true) bool(false) bool(false) -string(8) "stdClass" +string(9) "\stdClass" ** Function/method return type 2 bool(true) bool(false) @@ -177,9 +177,9 @@ string(6) "parent" bool(true) bool(false) bool(false) -string(4) "Test" +string(5) "\Test" ** Function/method return type 6 bool(true) bool(false) bool(false) -string(4) "Test" +string(5) "\Test" diff --git a/ext/reflection/tests/ReflectionType_002.phpt b/ext/reflection/tests/ReflectionType_002.phpt index 8313862ec5..9c9c77b76b 100644 --- a/ext/reflection/tests/ReflectionType_002.phpt +++ b/ext/reflection/tests/ReflectionType_002.phpt @@ -12,6 +12,6 @@ unset($rm, $rp); var_dump((string) $rt, (string) $rrt); --EXPECT-- -string(4) "Test" -string(5) "Test2" +string(5) "\Test" +string(6) "\Test2" diff --git a/ext/reflection/tests/ReflectionType_possible_types.phpt b/ext/reflection/tests/ReflectionType_possible_types.phpt index 81e08550f2..0db5b7c3f0 100644 --- a/ext/reflection/tests/ReflectionType_possible_types.phpt +++ b/ext/reflection/tests/ReflectionType_possible_types.phpt @@ -28,4 +28,4 @@ string(6) "string" string(4) "bool" string(5) "array" string(8) "callable" -string(8) "StdClass" +string(9) "\StdClass" -- 2.40.0