]> granicus.if.org Git - php/commitdiff
Promote warnings to exceptions in settype() function
authorMáté Kocsis <kocsismate@woohoolabs.com>
Wed, 20 Nov 2019 01:26:39 +0000 (02:26 +0100)
committerMáté Kocsis <kocsismate@woohoolabs.com>
Thu, 5 Dec 2019 07:31:43 +0000 (08:31 +0100)
Zend/tests/settype_resource.phpt
ext/standard/tests/general_functions/gettype_settype_basic.phpt
ext/standard/tests/general_functions/gettype_settype_error.phpt
ext/standard/tests/general_functions/gettype_settype_variation5.phpt
ext/standard/tests/general_functions/type.phpt
ext/standard/type.c

index a6721cb7572a2b4964a3eb7d650bb83b041594ca..1b038613f33520e50c6f0661574896ce5314f243 100644 (file)
Binary files a/Zend/tests/settype_resource.phpt and b/Zend/tests/settype_resource.phpt differ
index fac0327ad5181df6a62357214f1450088d8fc1ee..80d12588e1dc9e981e1f7d0a2222dadf3cfb254c 100644 (file)
@@ -93,14 +93,19 @@ foreach ($types as $type) {
   $loop_count = 1;
   foreach ($values as $var) {
      echo "-- Iteration $loop_count --\n"; $loop_count ++;
-     // set to new type
-     var_dump( settype($var, $type) );
 
-     // dump the var
-     var_dump( $var );
+     try {
+        // set to new type
+        var_dump( settype($var, $type) );
 
-     // check the new type
-     var_dump( gettype($var) );
+        // dump the var
+        var_dump( $var );
+
+        // check the new type
+        var_dump( gettype($var) );
+     } catch (ValueError $exception) {
+         echo $exception->getMessage() . "\n";
+     }
   }
 }
 
@@ -539,94 +544,33 @@ string(7) "boolean"
 
 -- Setting type of data to resource --
 -- Iteration 1 --
-2: settype(): Cannot convert to resource type
-bool(false)
-array(3) {
-  [0]=>
-  int(1)
-  [1]=>
-  int(2)
-  [2]=>
-  int(3)
-}
-string(5) "array"
+Cannot convert to resource type
 -- Iteration 2 --
-2: settype(): Cannot convert to resource type
-bool(false)
-string(14) "another string"
-string(6) "string"
+Cannot convert to resource type
 -- Iteration 3 --
-2: settype(): Cannot convert to resource type
-bool(false)
-array(3) {
-  [0]=>
-  int(2)
-  [1]=>
-  int(3)
-  [2]=>
-  int(4)
-}
-string(5) "array"
+Cannot convert to resource type
 -- Iteration 4 --
-2: settype(): Cannot convert to resource type
-bool(false)
-int(1)
-string(7) "integer"
+Cannot convert to resource type
 -- Iteration 5 --
-2: settype(): Cannot convert to resource type
-bool(false)
-int(-20)
-string(7) "integer"
+Cannot convert to resource type
 -- Iteration 6 --
-2: settype(): Cannot convert to resource type
-bool(false)
-float(2.54)
-string(6) "double"
+Cannot convert to resource type
 -- Iteration 7 --
-2: settype(): Cannot convert to resource type
-bool(false)
-float(-2.54)
-string(6) "double"
+Cannot convert to resource type
 -- Iteration 8 --
-2: settype(): Cannot convert to resource type
-bool(false)
-NULL
-string(4) "NULL"
+Cannot convert to resource type
 -- Iteration 9 --
-2: settype(): Cannot convert to resource type
-bool(false)
-bool(false)
-string(7) "boolean"
+Cannot convert to resource type
 -- Iteration 10 --
-2: settype(): Cannot convert to resource type
-bool(false)
-string(11) "some string"
-string(6) "string"
+Cannot convert to resource type
 -- Iteration 11 --
-2: settype(): Cannot convert to resource type
-bool(false)
-string(6) "string"
-string(6) "string"
+Cannot convert to resource type
 -- Iteration 12 --
-2: settype(): Cannot convert to resource type
-bool(false)
-resource(%d) of type (stream)
-string(8) "resource"
+Cannot convert to resource type
 -- Iteration 13 --
-2: settype(): Cannot convert to resource type
-bool(false)
-resource(%d) of type (stream)
-string(8) "resource"
+Cannot convert to resource type
 -- Iteration 14 --
-2: settype(): Cannot convert to resource type
-bool(false)
-object(point)#1 (2) {
-  ["x"]=>
-  int(10)
-  ["y"]=>
-  int(20)
-}
-string(6) "object"
+Cannot convert to resource type
 
 -- Setting type of data to array --
 -- Iteration 1 --
index e204c64d4c7bd68bdc38219e798a05cd1d05d9db..e310f9e0ac3fe0b5b23dbb8ced544e9b51cc3db1 100644 (file)
@@ -16,15 +16,17 @@ echo "**** Testing gettype() and settype() functions ****\n";
 echo "\n*** Testing settype(): error conditions ***\n";
 
 // passing an invalid type to set
-var_dump( settype( $var, "unknown" ) );
+try {
+    settype( $var, "unknown" );
+} catch (ValueError $exception) {
+    echo $exception->getMessage() . "\n";
+}
 
 echo "Done\n";
 ?>
---EXPECTF--
+--EXPECT--
 **** Testing gettype() and settype() functions ****
 
 *** Testing settype(): error conditions ***
-
-Warning: settype(): Invalid type in %s on line %d
-bool(false)
+Invalid type
 Done
index 6437baa10b3b31540284fb98080559ad351e57ae..f9f0059bfa44de8689a627ea5f50d4c1d71cda04 100644 (file)
@@ -24,17 +24,6 @@ precision=14
      dump the variable to see its new data
      get the new type of the variable
 */
-
-/* function to handle catchable errors */
-function foo($errno, $errstr, $errfile, $errline) {
-//     var_dump($errstr);
-   // print error no and error string
-   echo "$errno: $errstr\n";
-}
-//set the error handler, this is required as
-// settype() would fail with catachable fatal error
-set_error_handler("foo");
-
 $var1 = "another string";
 $var2 = array(2,3,4);
 
@@ -63,7 +52,7 @@ $var_values = array (
   true,
 
   /* strings */
-  "\xFF",
+  "\$",
   "\x66",
   "\0123",
   "",
@@ -159,286 +148,246 @@ foreach ($var_values as $var) {
   // get the current data type
   var_dump( gettype($var) );
 
-  // convert it to null
-  var_dump( settype($var, $type) );
+  // convert it to resource
+  try {
+    var_dump(settype($var, $type));
+  } catch (ValueError $exception) {
+    echo $exception->getMessage() . "\n";
+  }
 
   // dump the converted data
-  var_dump( $var );
+  var_dump($var);
 
   // check the new type after conversion
-  var_dump( gettype($var) );
+  var_dump(gettype($var));
 }
 
 echo "Done\n";
 ?>
---EXPECTF--
+--EXPECT--
 *** Testing gettype() & settype() functions : usage variations ***
 
 -- Setting type of data to resource --
 -- Iteration 1 --
 string(4) "NULL"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 NULL
 string(4) "NULL"
 -- Iteration 2 --
 string(7) "boolean"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 bool(false)
 string(7) "boolean"
 -- Iteration 3 --
 string(7) "boolean"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 bool(true)
 string(7) "boolean"
 -- Iteration 4 --
 string(7) "boolean"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 bool(true)
 string(7) "boolean"
 -- Iteration 5 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
-string(1) "ÿ"
+Cannot convert to resource type
+string(1) "$"
 string(6) "string"
 -- Iteration 6 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(1) "f"
 string(6) "string"
 -- Iteration 7 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(2) "
 3"
 string(6) "string"
 -- Iteration 8 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(0) ""
 string(6) "string"
 -- Iteration 9 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(0) ""
 string(6) "string"
 -- Iteration 10 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(1) " "
 string(6) "string"
 -- Iteration 11 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(1) " "
 string(6) "string"
 -- Iteration 12 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(2) "10"
 string(6) "string"
 -- Iteration 13 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(2) "10"
 string(6) "string"
 -- Iteration 14 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(8) "10string"
 string(6) "string"
 -- Iteration 15 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(8) "10string"
 string(6) "string"
 -- Iteration 16 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(1) "1"
 string(6) "string"
 -- Iteration 17 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(2) "-1"
 string(6) "string"
 -- Iteration 18 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(3) "1e2"
 string(6) "string"
 -- Iteration 19 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(2) " 1"
 string(6) "string"
 -- Iteration 20 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(22) "2974394749328742328432"
 string(6) "string"
 -- Iteration 21 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(5) "-1e-2"
 string(6) "string"
 -- Iteration 22 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(1) "1"
 string(6) "string"
 -- Iteration 23 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(2) "-1"
 string(6) "string"
 -- Iteration 24 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(3) "1e2"
 string(6) "string"
 -- Iteration 25 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(2) " 1"
 string(6) "string"
 -- Iteration 26 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(22) "2974394749328742328432"
 string(6) "string"
 -- Iteration 27 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(5) "-1e-2"
 string(6) "string"
 -- Iteration 28 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(4) "0xff"
 string(6) "string"
 -- Iteration 29 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(4) "0x55"
 string(6) "string"
 -- Iteration 30 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(5) "0XA55"
 string(6) "string"
 -- Iteration 31 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(5) "0X123"
 string(6) "string"
 -- Iteration 32 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(4) "0123"
 string(6) "string"
 -- Iteration 33 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(4) "0123"
 string(6) "string"
 -- Iteration 34 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(5) "-0123"
 string(6) "string"
 -- Iteration 35 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(5) "+0123"
 string(6) "string"
 -- Iteration 36 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(5) "-0123"
 string(6) "string"
 -- Iteration 37 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(5) "+0123"
 string(6) "string"
 -- Iteration 38 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(8) "-0x80001"
 string(6) "string"
 -- Iteration 39 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(8) "+0x80001"
 string(6) "string"
 -- Iteration 40 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(10) "-0x80001.5"
 string(6) "string"
 -- Iteration 41 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(9) "0x80001.5"
 string(6) "string"
 -- Iteration 42 --
 string(6) "string"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 string(12) "@$%#$%^$%^&^"
 string(6) "string"
 -- Iteration 43 --
 string(5) "array"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 array(0) {
 }
 string(5) "array"
 -- Iteration 44 --
 string(5) "array"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 array(1) {
   [0]=>
   NULL
@@ -446,8 +395,7 @@ array(1) {
 string(5) "array"
 -- Iteration 45 --
 string(5) "array"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 array(4) {
   [0]=>
   int(1)
@@ -461,8 +409,7 @@ array(4) {
 string(5) "array"
 -- Iteration 46 --
 string(5) "array"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 array(4) {
   [1]=>
   string(3) "one"
@@ -476,8 +423,7 @@ array(4) {
 string(5) "array"
 -- Iteration 47 --
 string(5) "array"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 array(3) {
   [0]=>
   float(1.5)
@@ -489,176 +435,147 @@ array(3) {
 string(5) "array"
 -- Iteration 48 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(-2147483648)
 string(6) "double"
 -- Iteration 49 --
 string(7) "integer"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 int(2147483647)
 string(7) "integer"
 -- Iteration 50 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(2147483649)
 string(6) "double"
 -- Iteration 51 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(1232147483649)
 string(6) "double"
 -- Iteration 52 --
 string(7) "integer"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 int(85)
 string(7) "integer"
 -- Iteration 53 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(1058513956921)
 string(6) "double"
 -- Iteration 54 --
 string(7) "integer"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 int(-21903)
 string(7) "integer"
 -- Iteration 55 --
 string(7) "integer"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 int(365)
 string(7) "integer"
 -- Iteration 56 --
 string(7) "integer"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 int(-365)
 string(7) "integer"
 -- Iteration 57 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(80561044571754)
 string(6) "double"
 -- Iteration 58 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(100000)
 string(6) "double"
 -- Iteration 59 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(-100000)
 string(6) "double"
 -- Iteration 60 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(100000)
 string(6) "double"
 -- Iteration 61 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(-100000)
 string(6) "double"
 -- Iteration 62 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(-1.5)
 string(6) "double"
 -- Iteration 63 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(0.5)
 string(6) "double"
 -- Iteration 64 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(-0.5)
 string(6) "double"
 -- Iteration 65 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(500000)
 string(6) "double"
 -- Iteration 66 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(-500000)
 string(6) "double"
 -- Iteration 67 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(-5.0E-7)
 string(6) "double"
 -- Iteration 68 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(500000)
 string(6) "double"
 -- Iteration 69 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(-500000)
 string(6) "double"
 -- Iteration 70 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(512000)
 string(6) "double"
 -- Iteration 71 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(-512000)
 string(6) "double"
 -- Iteration 72 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(5.12E-7)
 string(6) "double"
 -- Iteration 73 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(5.12E-7)
 string(6) "double"
 -- Iteration 74 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(512000)
 string(6) "double"
 -- Iteration 75 --
 string(6) "double"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 float(-512000)
 string(6) "double"
 -- Iteration 76 --
 string(6) "object"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 object(point)#1 (2) {
   ["x"]=>
   NULL
@@ -668,8 +585,7 @@ object(point)#1 (2) {
 string(6) "object"
 -- Iteration 77 --
 string(6) "object"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 object(point)#2 (2) {
   ["x"]=>
   float(2.5)
@@ -679,8 +595,7 @@ object(point)#2 (2) {
 string(6) "object"
 -- Iteration 78 --
 string(6) "object"
-2: settype(): Cannot convert to resource type
-bool(false)
+Cannot convert to resource type
 object(point)#3 (2) {
   ["x"]=>
   int(0)
index 0b460b08d1e7aa43dc5477b6bfb2baf5670d5ce7..342b353baf7827ae29a3bc89f72702820bef17f2 100644 (file)
@@ -160,8 +160,7 @@ bool(true)
 bool(true)
 bool(true)
 bool(true)
-string(42) "settype(): Cannot convert to resource type"
-bool(false)
+Error: Cannot convert to resource type
 array(3) {
   [0]=>
   int(1)
@@ -170,11 +169,9 @@ array(3) {
   [2]=>
   int(3)
 }
-string(42) "settype(): Cannot convert to resource type"
-bool(false)
+Error: Cannot convert to resource type
 string(14) "another string"
-string(42) "settype(): Cannot convert to resource type"
-bool(false)
+Error: Cannot convert to resource type
 array(3) {
   [0]=>
   int(2)
@@ -183,29 +180,21 @@ array(3) {
   [2]=>
   int(4)
 }
-string(42) "settype(): Cannot convert to resource type"
-bool(false)
+Error: Cannot convert to resource type
 int(1)
-string(42) "settype(): Cannot convert to resource type"
-bool(false)
+Error: Cannot convert to resource type
 float(2)
-string(42) "settype(): Cannot convert to resource type"
-bool(false)
+Error: Cannot convert to resource type
 NULL
-string(42) "settype(): Cannot convert to resource type"
-bool(false)
-bool(false)
-string(42) "settype(): Cannot convert to resource type"
+Error: Cannot convert to resource type
 bool(false)
+Error: Cannot convert to resource type
 string(11) "some string"
-string(42) "settype(): Cannot convert to resource type"
-bool(false)
+Error: Cannot convert to resource type
 resource(%d) of type (Unknown)
-string(42) "settype(): Cannot convert to resource type"
-bool(false)
+Error: Cannot convert to resource type
 resource(%d) of type (stream)
-string(42) "settype(): Cannot convert to resource type"
-bool(false)
+Error: Cannot convert to resource type
 object(stdClass)#%d (0) {
 }
 bool(true)
index af847bf352ce104c53b19307dbeaa288aef4d102..b794937b881bf79f8bf8f4e62d82962b18f5fbbe 100644 (file)
@@ -82,11 +82,11 @@ PHP_FUNCTION(settype)
                        zval_ptr_dtor(&tmp);
                }
                if (zend_string_equals_literal_ci(type, "resource")) {
-                       php_error_docref(NULL, E_WARNING, "Cannot convert to resource type");
+                       zend_value_error("Cannot convert to resource type");
                } else {
-                       php_error_docref(NULL, E_WARNING, "Invalid type");
+                       zend_value_error("Invalid type");
                }
-               RETURN_FALSE;
+               return;
        }
 
        if (ptr == &tmp) {