]> granicus.if.org Git - php/commitdiff
Revert ReflectionType::__toString() behavior + deprecate
authorNikita Popov <nikic@php.net>
Wed, 21 Sep 2016 19:36:09 +0000 (21:36 +0200)
committerNikita Popov <nikic@php.net>
Wed, 28 Sep 2016 17:21:51 +0000 (19:21 +0200)
Zend/tests/bug69802.phpt
Zend/tests/closures/closure_from_callable_reflection.phpt
Zend/zend_API.c
ext/reflection/php_reflection.c
ext/reflection/tests/ReflectionNamedType.phpt
ext/reflection/tests/ReflectionType_001.phpt
ext/reflection/tests/ReflectionType_002.phpt
ext/reflection/tests/ReflectionType_possible_types.phpt
ext/reflection/tests/bug72661.phpt

index ed0430f6d20017ec6be80185889b4b8bb9a6356d..3962d55f03e3b77a8923b047021b54a1da70c603 100644 (file)
@@ -7,7 +7,7 @@ $r = new ReflectionMethod($f, '__invoke');
 var_dump($r->getParameters()[0]->getName());
 var_dump($r->getParameters()[0]->getClass());
 echo $r->getParameters()[0], "\n";
-echo $r->getReturnType(),"\n";
+echo $r->getReturnType()->getName(), "\n";
 echo $r,"\n";
 ?>
 --EXPECT--
index 48e1e77670a33e4c71b1ecbffeb80b3e034a16f1..af40193fbaa91dabc7ad45e8345bdc2f04463bc5 100644 (file)
@@ -29,7 +29,7 @@ foreach ($callables as $callable) {
        foreach ($refl->getParameters() as $param) {
                if ($param->hasType()) {
                        $type = $param->getType();
-                       echo $type->__toString() . "\n";
+                       echo $type->getName() . "\n";
                }
        }
 }
index fe2bf3711b2f5ba31c063d17272cf047623585a5..6ce60e1f06d61a2fcba61b6468fe3d6c9fda6573 100644 (file)
@@ -2158,7 +2158,7 @@ ZEND_API int zend_register_functions(zend_class_entry *scope, const zend_functio
                internal_function->prototype = NULL;
                if (ptr->flags) {
                        if (!(ptr->flags & ZEND_ACC_PPP_MASK)) {
-                               if (ptr->flags != ZEND_ACC_DEPRECATED || scope) {
+                               if (ptr->flags != ZEND_ACC_DEPRECATED && scope) {
                                        zend_error(error_type, "Invalid access level for %s%s%s() - access must be exactly one of public, protected or private", scope ? ZSTR_VAL(scope->name) : "", scope ? "::" : "", ptr->fname);
                                }
                                internal_function->fn_flags = ZEND_ACC_PUBLIC | ptr->flags;
index 16601ee4d6ba17a23a2070cf59bb722451281a96..47c09d4521a9bc308c0ec6be69fa05b1305d3fcb 100644 (file)
@@ -3022,23 +3022,13 @@ ZEND_METHOD(reflection_type, __toString)
 {
        reflection_object *intern;
        type_reference *param;
-       zend_string *str;
 
        if (zend_parse_parameters_none() == FAILURE) {
                return;
        }
        GET_REFLECTION_OBJECT_PTR(param);
        
-       str = reflection_type_name(param);
-       
-       if (param->arg_info->allow_null) {
-               size_t orig_len = ZSTR_LEN(str);
-               str = zend_string_extend(str, orig_len + 1, 0);
-               memmove(ZSTR_VAL(str) + 1, ZSTR_VAL(str), orig_len + 1);
-               ZSTR_VAL(str)[0] = '?';
-       }
-       
-       RETURN_STR(str);
+       RETURN_STR(reflection_type_name(param));
 }
 /* }}} */
 
@@ -6711,7 +6701,7 @@ static const zend_function_entry reflection_type_functions[] = {
        ZEND_ME(reflection, __clone, arginfo_reflection__void, ZEND_ACC_PRIVATE|ZEND_ACC_FINAL)
        ZEND_ME(reflection_type, allowsNull, arginfo_reflection__void, 0)
        ZEND_ME(reflection_type, isBuiltin, arginfo_reflection__void, 0)
-       ZEND_ME(reflection_type, __toString, arginfo_reflection__void, 0)
+       ZEND_ME(reflection_type, __toString, arginfo_reflection__void, ZEND_ACC_DEPRECATED)
        PHP_FE_END
 };
 
index 1e8f55ac9d8a5f001b9847603059d3412cbe2dfe..afb592127c3863b4afb8ffe69ec80dd5349a9622 100644 (file)
@@ -32,10 +32,18 @@ var_dump((string) $return);
 ?>
 --EXPECTF--
 string(11) "Traversable"
-string(12) "?Traversable"
+
+Deprecated: Function ReflectionType::__toString() is deprecated in %s on line %d
+string(11) "Traversable"
+string(6) "string"
+
+Deprecated: Function ReflectionType::__toString() is deprecated in %s on line %d
 string(6) "string"
-string(7) "?string"
 string(4) "Test"
-string(5) "?Test"
+
+Deprecated: Function ReflectionType::__toString() is deprecated in %s on line %d
+string(4) "Test"
+string(4) "Test"
+
+Deprecated: Function ReflectionType::__toString() is deprecated in %s on line %d
 string(4) "Test"
-string(5) "?Test"
index ee2ebb64dd63c8ea15fc72e0ec6544296a39cd39..d949e18107e7ad27bdd6aff85670bf9f8ef4b5da 100644 (file)
@@ -28,7 +28,7 @@ foreach ([
     if ($ra) {
       var_dump($ra->allowsNull());
       var_dump($ra->isBuiltin());
-      var_dump((string)$ra);
+      var_dump($ra->getName());
     }
   }
 }
@@ -48,7 +48,7 @@ foreach ([
     if ($ra) {
       var_dump($ra->allowsNull());
       var_dump($ra->isBuiltin());
-      var_dump((string)$ra);
+      var_dump($ra->getName());
     }
   }
 }
@@ -70,7 +70,7 @@ foreach ([
   if ($ra) {
     var_dump($ra->allowsNull());
     var_dump($ra->isBuiltin());
-    var_dump((string)$ra);
+    var_dump($ra->getName());
   }
 }
 
@@ -96,7 +96,7 @@ string(8) "callable"
 bool(true)
 bool(true)
 bool(false)
-string(9) "?stdClass"
+string(8) "stdClass"
 ** Function 0 - Parameter 4
 bool(false)
 ** Function 0 - Parameter 5
index 8313862ec5a5b614fcf8d44535937ab570940b65..501dfc8d893ea71669dd767fc250efe491d7475b 100644 (file)
@@ -9,7 +9,7 @@ $rp = $rm->getParameters()[0];
 $rt = $rp->getType();
 $rrt = $rm->getReturnType();
 unset($rm, $rp);
-var_dump((string) $rt, (string) $rrt);
+var_dump($rt->getName(), $rrt->getName());
 
 --EXPECT--
 string(4) "Test"
index 81e08550f252049fb168018b31d8cdb18acffda2..55302242be5fa0a81b38bc4e4df1f87e00af45eb 100644 (file)
@@ -17,7 +17,7 @@ $functions = [
 foreach ($functions as $function) {
     $reflectionFunc = new ReflectionFunction($function);
     $returnType = $reflectionFunc->getReturnType();
-    var_dump($returnType->__toString());
+    var_dump($returnType->getName());
 }
 ?>
 --EXPECTF--
index 40d14922b81ad11d3ea8ca8b609ce0a78f9b2ef3..1522c5f201d6aa7985cf6a0b8e0c36eefd048c57 100644 (file)
@@ -6,5 +6,6 @@ function test(iterable $arg) { }
 
 var_dump((string)(new ReflectionParameter("test", 0))->getType());
 ?>
---EXPECT--
+--EXPECTF--
+Deprecated: Function ReflectionType::__toString() is deprecated in %s on line %d
 string(8) "iterable"