summaryrefslogtreecommitdiff
path: root/ext/reflection
diff options
context:
space:
mode:
authorAaron Piotrowski <aaron@trowski.com>2016-08-16 11:28:33 -0500
committerAaron Piotrowski <aaron@trowski.com>2016-08-16 11:28:33 -0500
commit20fdd47921f423728b409fd0ae0106dab9c34573 (patch)
treea594e8d5503bc96993a33801f2700008743cd08e /ext/reflection
parentba09a520d230506b26ba75e0714131b4ad16d034 (diff)
downloadphp-git-20fdd47921f423728b409fd0ae0106dab9c34573.tar.gz
Append \ to class name returned from ReflectionType::__toString()
Diffstat (limited to 'ext/reflection')
-rw-r--r--ext/reflection/php_reflection.c8
-rw-r--r--ext/reflection/tests/ReflectionNamedType.phpt6
-rw-r--r--ext/reflection/tests/ReflectionType_001.phpt18
-rw-r--r--ext/reflection/tests/ReflectionType_002.phpt4
-rw-r--r--ext/reflection/tests/ReflectionType_possible_types.phpt2
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"