]> granicus.if.org Git - php/commitdiff
Deprecate create_function()
authorNikita Popov <nikita.ppv@gmail.com>
Mon, 30 Jan 2017 21:09:32 +0000 (22:09 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 3 Feb 2017 17:52:57 +0000 (18:52 +0100)
26 files changed:
Zend/tests/anonymous_func_001.phpt
Zend/tests/anonymous_func_002.phpt
Zend/tests/anonymous_func_003.phpt
Zend/tests/bug48693.phpt
Zend/tests/closure_025.phpt
Zend/tests/exception_012.phpt
Zend/tests/instanceof_001.phpt
Zend/zend_builtin_functions.c
ext/opcache/tests/bug68252.phpt
ext/pcre/tests/preg_replace_callback2.phpt
ext/pcre/tests/preg_replace_callback_array.phpt
ext/spl/tests/bug61697.phpt
ext/standard/tests/array/array_filter_variation7.phpt
ext/standard/tests/array/array_map_variation10.phpt
ext/standard/tests/array/array_walk_recursive_variation7.phpt
ext/standard/tests/array/array_walk_variation7.phpt
ext/standard/tests/array/uasort_variation7.phpt
ext/standard/tests/array/usort_variation7.phpt
ext/standard/tests/general_functions/print_r.phpt
ext/standard/tests/general_functions/print_r_64bit.phpt
ext/standard/tests/general_functions/var_dump.phpt
ext/standard/tests/general_functions/var_dump_64bit.phpt
ext/standard/tests/strings/bug37262.phpt
tests/lang/bug17115.phpt
tests/lang/bug22690.phpt
tests/lang/bug24926.phpt

index 644a7f49adb8ce9fadb69c12a799d8911ad41615..8e4bc42a0b865857a4a413ebf6dfba244a985c67 100644 (file)
@@ -12,24 +12,43 @@ for ($i = 0; $i < 10; $i++) {
 }
 
 ?>
---EXPECT--
+--EXPECTF--
+Deprecated: Function create_function() is deprecated in %s on line %d
 int(0)
 int(0)
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 int(1)
 int(1)
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 int(2)
 int(2)
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 int(3)
 int(3)
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 int(4)
 int(4)
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 int(5)
 int(5)
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 int(6)
 int(6)
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 int(7)
 int(7)
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 int(8)
 int(8)
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 int(9)
 int(9)
index 4c40b62300bb75e0fc70ade7647f8ee3d17a7f5a..1b9375c89f7fb54263f59e5dbe2b431696fbeceb 100644 (file)
@@ -11,6 +11,9 @@ var_dump($arr[$test(1)]);
 var_dump($arr[$test(0)]() == $arr);
 
 ?>
---EXPECT--
+--EXPECTF--
+Deprecated: Function create_function() is deprecated in %s on line %d
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 int(2)
 bool(true)
index 32c5cf085c844c92e2c695b615ade7c39f7ff53a..f06a463727aa0bf2e103f7b0b998da3ad2a7e9a2 100644 (file)
@@ -11,5 +11,6 @@ try {
 }
 
 ?>
---EXPECT--
+--EXPECTF--
+Deprecated: Function create_function() is deprecated in %s on line %d
 bool(true)
index 41e0d822747cf49c8257c59af83406bd0db6f902..f916b6407bf60b9b01d2722c6f323b2d96e8d0c9 100644 (file)
@@ -31,15 +31,22 @@ var_dump(
 
 ?>
 --EXPECTF--
+Deprecated: Function create_function() is deprecated in %s on line %d
 ParseError: syntax error, unexpected '}', expecting end of file in %sbug48693.php(4) : runtime-created function:1
 Stack trace:
 #0 %sbug48693.php(4): create_function('', 'return 1; }')
 #1 {main}
 
+
+Deprecated: Function create_function() is deprecated in %s on line %d
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 ParseError: syntax error, unexpected end of file in %sbug48693.php(14) : runtime-created function:1
 Stack trace:
 #0 %sbug48693.php(14): create_function('', '{')
 #1 {main}
 
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 int(2)
 int(3)
index 8ee187e1c8cf8d28357a393b3699aab3453bbc28..b3d03a7ad90a0f96f124bd698a683019a654f7a5 100644 (file)
@@ -8,5 +8,6 @@ $a = create_function('$x', 'return function($y) use ($x) { return $x * $y; };');
 var_dump($a(2)->__invoke(4));
 
 ?>
---EXPECT--
+--EXPECTF--
+Deprecated: Function create_function() is deprecated in %s on line %d
 int(8)
index bf00529a6ca47128e21d527dd73eff66aaf9bb60..a28e1643f556dd1bfb02c43f3c750a713725b20f 100644 (file)
@@ -13,6 +13,8 @@ $func();
 --EXPECTHEADERS--
 Content-type: text/html; charset=UTF-8
 --EXPECTF--
+Deprecated: Function create_function() is deprecated in %s on line %d
+
 Fatal error: Uncaught AssertionError: assert(false) in %sexception_012.php(%d) : runtime-created function:%d
 Stack trace:
 #0 %sexception_012.php(%d) : runtime-created function(%d): assert(false, 'assert(false)')
index 95e43ba5067aef47ca58411f096393e6a090e090..9c86136c54c2b0dc1dd7bb466924ecc8c570bb6f 100644 (file)
@@ -22,6 +22,8 @@ var_dump("$a" instanceof stdClass);
 --EXPECTF--
 bool(true)
 bool(true)
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 bool(true)
 bool(true)
 bool(false)
index 4ba9dc4189b59503ddef696b36cf333a73aab8dc..397a043a5bb7b7750e8060ad798330acde3bbbc3 100644 (file)
@@ -368,7 +368,7 @@ static const zend_function_entry builtin_functions[] = { /* {{{ */
        ZEND_FE(get_declared_interfaces,        arginfo_zend__void)
        ZEND_FE(get_defined_functions,          arginfo_zend__void)
        ZEND_FE(get_defined_vars,               arginfo_zend__void)
-       ZEND_FE(create_function,                arginfo_create_function)
+       ZEND_DEP_FE(create_function,            arginfo_create_function)
        ZEND_FE(get_resource_type,              arginfo_get_resource_type)
        ZEND_FE(get_resources,                  arginfo_get_resources)
        ZEND_FE(get_loaded_extensions,          arginfo_get_loaded_extensions)
index e05467a2440c3fd92ff7d66bb964e400b028ad6b..bc2e5a0fb68cce007d734960d9fc2ce03722415e 100644 (file)
@@ -16,5 +16,6 @@ function a() {
 create_function('', 'var_dump("22");');
 
 a();
---EXPECT--
+--EXPECTF--
+Deprecated: Function create_function() is deprecated in %s on line %d
 okey
index 7989509aa1eecf1b1a8758427d060eb61e8a40b3..1fe78d59ee66ed9e78bea6fa5efce6a8f6de632d 100644 (file)
@@ -19,7 +19,7 @@ var_dump(preg_replace_callback('@\b\w{1,2}\b@', 'g', array('a b3 bcd', 'v' => 'a
 
 var_dump(preg_replace_callback('~\A.~', 'g', array(array('xyz'))));
 
-var_dump(preg_replace_callback('~\A.~', create_function('$m', 'return strtolower($m[0]);'), 'ABC'));
+var_dump(preg_replace_callback('~\A.~', function($m) { return strtolower($m[0]); }, 'ABC'));
 ?>
 --EXPECTF--
 array(3) {
index 9e9e81913499a2cabb0ce165118e1a16a418e45d..6780bfba1b539645845f064f141ddac79ef8d901 100644 (file)
@@ -38,7 +38,7 @@ var_dump(preg_replace_callback_array(
                '/d/' => array("Foo", "rep"),
                "/c/" => new Rep,
                "/a/" => 'b',
-               "/b/" => create_function('$a', 'return "ok";')), 'a', -1, $count));
+               "/b/" => function($a) { return "ok"; }), 'a', -1, $count));
 
 var_dump($count);
 ?>
index 064aaa2e2bf1974b5c371938c14690b38ed269ea..8cd38289efd13df9634a13f362fb2bbbb94e73df 100644 (file)
@@ -8,8 +8,8 @@ function f2($class) { echo "f2: [[$class]]\n"; }
 
 spl_autoload_register('f1');
 spl_autoload_register('f2');
-spl_autoload_register(create_function('$class', 'echo "cf1: [[$class]]\n";'));
-spl_autoload_register(create_function('$class', 'echo "cf2: [[$class]]\n";'));
+spl_autoload_register(function($class) { echo "cf1: [[$class]]\n"; });
+spl_autoload_register(function($class) { echo "cf2: [[$class]]\n"; });
 
 foreach (spl_autoload_functions() AS $func)
 {
index cb856f713d7051cc2ceb36d6aa98fcff76649f18..79fb574e230351ddc99d2afad82337e77ba46cd1 100644 (file)
@@ -17,19 +17,19 @@ $input = array(0, 1, -1, 10, 100, 1000, 'Hello', null);
 
 // anonymous callback function
 echo "Anonymous callback function with regular parameter and statement\n";
-var_dump( array_filter($input, create_function('$input', 'return ($input > 1);') ) );
+var_dump( array_filter($input, function($input) { return ($input > 1); }) );
 
 // anonymous callback function with reference
 echo "Anonymous callback function with reference parameter\n";
-var_dump( array_filter($input, create_function('&$input', 'return ($input < 1);') ) );
+var_dump( array_filter($input, function(&$input) { return ($input < 1); }) );
 
 // anonymous callback function with null argument
 echo "Anonymous callback funciton with null argument\n";
-var_dump( array_filter($input, create_function(null, 'return true;') ) );
+var_dump( array_filter($input, function() { return true; }) );
 
 // anonymous callback function with argument and null statement
 echo "Anonymous callback function with regular argument and null statement\n";
-var_dump( array_filter($input, create_function('$input', null) ) );
+var_dump( array_filter($input, function($input) { }) );
 
 echo "Done"
 ?>
index ecf91576207e723b6f44b816aa974453749beb17..effda06745a88632e933a7ec7f7bfc1dea9be900 100644 (file)
@@ -17,23 +17,23 @@ $array1 = array(1, 2, 3);
 $array2 = array(3, 4, 5);
 
 echo "-- anonymous function with all parameters and body --\n";
-var_dump( array_map( create_function('$a, $b', 'return array($a, $b);'), $array1, $array2));
+var_dump( array_map( function($a, $b) { return array($a, $b); }, $array1, $array2));
 
 echo "-- anonymous function with two parameters and passing one array --\n";
 try {
-       var_dump( array_map( create_function('$a, $b', 'return array($a, $b);'), $array1));
+       var_dump( array_map( function($a, $b) { return array($a, $b); }, $array1));
 } catch (Throwable $e) {
        echo "Exception: " . $e->getMessage() . "\n";
 }
 
 echo "-- anonymous function with NULL parameter --\n";
-var_dump( array_map( create_function(NULL, 'return NULL;'), $array1));
+var_dump( array_map( function() { return NULL; }, $array1));
 
 echo "-- anonymous function with NULL body --\n";
-var_dump( array_map( create_function('$a', NULL), $array1));
+var_dump( array_map( function($a) { }, $array1));
 
 echo "-- passing NULL as 'arr1' --\n";
-var_dump( array_map( create_function('$a', 'return array($a);'), NULL));
+var_dump( array_map( function($a) { return array($a); }, NULL));
 
 echo "Done";
 ?>
@@ -64,7 +64,7 @@ array(3) {
   }
 }
 -- anonymous function with two parameters and passing one array --
-Exception: Too few arguments to function __lambda_func(), 1 passed and exactly 2 expected
+Exception: Too few arguments to function {closure}(), 1 passed and exactly 2 expected
 -- anonymous function with NULL parameter --
 array(3) {
   [0]=>
index 0cdd6d248d5cbd2ac9fedfa0d8781706e2046fc4..bc0d2059009eb4f0e4f81c414db2c50ae1baebf3 100644 (file)
@@ -21,19 +21,19 @@ echo "*** Testing array_walk_recursive() : anonymous function as callback ***\n"
 $input = array( array(2, 5), array(10, 0));
 
 echo "-- Anonymous function with one argument --\n";
-var_dump( array_walk_recursive($input, create_function('$value', 'var_dump($value); echo "\n";')));
+var_dump( array_walk_recursive($input, function($value) { var_dump($value); echo "\n"; }));
 
 echo "-- Anonymous function with two arguments --\n";
-var_dump( array_walk_recursive($input, create_function('$value, $key', 'var_dump($key); var_dump($value); echo "\n";')));
+var_dump( array_walk_recursive($input, function($value, $key) { var_dump($key); var_dump($value); echo "\n"; }));
 
 echo "-- Anonymous function with three arguments --\n";
-var_dump( array_walk_recursive($input, create_function('$value, $key, $user_data', 'var_dump($key); var_dump($value); var_dump($user_data); echo "\n";'), 10));
+var_dump( array_walk_recursive($input, function($value, $key, $user_data) { var_dump($key); var_dump($value); var_dump($user_data); echo "\n"; }, 10));
 
 echo "-- Anonymous function with one more argument --\n";
-var_dump( array_walk_recursive($input, create_function('$value, $key, $user_data', 'var_dump($key); var_dump($value); var_dump($user_data); echo "\n";'), 20, 30)); 
+var_dump( array_walk_recursive($input, function($value, $key, $user_data) { var_dump($key); var_dump($value); var_dump($user_data); echo "\n"; }, 20, 30)); 
 
 echo "-- Anonymous function with null argument --\n";
-var_dump( array_walk_recursive( $input, create_function(null, 'echo "1\n";')));
+var_dump( array_walk_recursive( $input, function() { echo "1\n"; }));
 echo "Done"
 ?>
 --EXPECTF--
index da85958b8e7465f9a59d57afe090353543958477..692f27662878fb27f3ec82de49a4d8daf47b2757 100644 (file)
@@ -21,19 +21,19 @@ echo "*** Testing array_walk() : anonymous function as callback ***\n";
 $input = array(2, 5, 10, 0);
 
 echo "-- Anonymous function with one argument --\n";
-var_dump( array_walk($input, create_function('$value', 'var_dump($value); echo "\n";')));
+var_dump( array_walk($input, function($value) { var_dump($value); echo "\n"; }));
 
 echo "-- Anonymous function with two arguments --\n";
-var_dump( array_walk($input, create_function('$value, $key', 'var_dump($key); var_dump($value); echo "\n";')));
+var_dump( array_walk($input, function($value, $key) { var_dump($key); var_dump($value); echo "\n"; }));
 
 echo "-- Anonymous function with three arguments --\n";
-var_dump( array_walk($input, create_function('$value, $key, $user_data', 'var_dump($key); var_dump($value); var_dump($user_data); echo "\n";'), 10));
+var_dump( array_walk($input, function($value, $key, $user_data) { var_dump($key); var_dump($value); var_dump($user_data); echo "\n"; }, 10));
 
 echo "-- Anonymous function with one more argument --\n";
-var_dump( array_walk($input, create_function('$value, $key, $user_data', 'var_dump($key); var_dump($value); var_dump($user_data); echo "\n";'), 20, 30)); 
+var_dump( array_walk($input, function($value, $key, $user_data) { var_dump($key); var_dump($value); var_dump($user_data); echo "\n"; }, 20, 30)); 
 
 echo "-- Anonymous function with null argument --\n";
-var_dump( array_walk( $input, create_function(null, 'echo "1\n";')));
+var_dump( array_walk( $input, function() { echo "1\n"; }));
 echo "Done"
 ?>
 --EXPECTF--
index 44a2bb3a26afdca22f9eceacacc0daf6122a5ca3..e37d9efe6b0c5f8475c9d42413bf324212cf1de6 100644 (file)
@@ -15,16 +15,26 @@ Test uasort() function : usage variations - anonymous function as 'cmp_function'
 
 echo "*** Testing uasort() : anonymous function as 'cmp_function' ***\n";
 
-$cmp_function = 'if($value1 == $value2) {return 0;} else if($value1 > $value2) {return 1;} else{return -1;}';
+$cmp_function = function($value1, $value2) {
+    if ($value1 == $value2) { return 0; }
+    else if ($value1 > $value2) { return 1; }
+    else { return -1; }
+};
 
 $array_arg = array(0 => 100, 1 => 3, 2 => -70, 3 => 24, 4 => 90);
 echo "-- Anonymous 'cmp_function' with parameters passed by value --\n";
-var_dump( uasort($array_arg, create_function('$value1, $value2',$cmp_function) ) );
+var_dump( uasort($array_arg, $cmp_function) );
 var_dump($array_arg);
 
+$cmp_function = function(&$value1, &$value2) {
+    if ($value1 == $value2) { return 0; }
+    else if ($value1 > $value2) { return 1; }
+    else { return -1; }
+};
+
 $array_arg = array("b" => "Banana", "m" => "Mango", "a" => "Apple", "p" => "Pineapple");
 echo "-- Anonymous 'cmp_function' with parameters passed by reference --\n";
-var_dump( uasort($array_arg, create_function('&$value1, &$value2', $cmp_function) ) );
+var_dump( uasort($array_arg, $cmp_function ) );
 var_dump($array_arg);
 
 echo "Done"
index e567341b1a3a314ea9e5219fb4daef972ba93efa..171e751df2ec93217ccc6cc6a9e14ae586c55cd8 100644 (file)
@@ -13,18 +13,28 @@ Test usort() function : usage variations - Anonymous comparison function
 
 echo "*** Testing usort() : usage variation ***\n";
 
-$cmp_function = 'if($value1 == $value2) {return 0;} else if($value1 > $value2) {return 1;} else{return -1;}';
+$cmp_function = function($value1, $value2) {
+    if ($value1 == $value2) { return 0; }
+    else if ($value1 > $value2) { return 1; }
+    else { return -1; }
+};
 
 $array_arg = array(0 => 100, 1 => 3, 2 => -70, 3 => 24, 4 => 90);
 
 echo "\n-- Anonymous 'cmp_function' with parameters passed by value --\n";
-var_dump( usort($array_arg, create_function('$value1, $value2',$cmp_function) ) );
+var_dump( usort($array_arg, $cmp_function) );
 var_dump($array_arg);
 
 $array_arg = array("b" => "Banana", "m" => "Mango", "a" => "Apple", "p" => "Pineapple");
 
+$cmp_function = function(&$value1, &$value2) {
+    if ($value1 == $value2) { return 0; }
+    else if ($value1 > $value2) { return 1; }
+    else { return -1; }
+};
+
 echo "\n-- Anonymous 'cmp_function' with parameters passed by reference --\n";
-var_dump( usort($array_arg, create_function('&$value1, &$value2', $cmp_function) ) );
+var_dump( usort($array_arg, $cmp_function) );
 var_dump($array_arg);
 ?>
 ===DONE===
@@ -58,4 +68,4 @@ array(4) {
   [3]=>
   string(9) "Pineapple"
 }
-===DONE===
\ No newline at end of file
+===DONE===
index e5b630a83976a2a5be4abd393d40ff0c77180b5a..e502f612911f451d42731043112bd42dce45a043 100644 (file)
@@ -1720,8 +1720,12 @@ Array
 
 
 *** Testing print_r() on anonymous functions ***
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 New anonymous function: \0lambda_1
-2 * 3 = 6\0lambda_2
+2 * 3 = 6
+Deprecated: Function create_function() is deprecated in %s on line %d
+\0lambda_2
 
 *** Testing error conditions ***
 
index 40f44ea1e486777c0c4ae16be8d42afcc99a6e7b..3054e0a431ccbb5d4618e4495af3e19cfa8bdb77 100644 (file)
@@ -1721,8 +1721,12 @@ Array
 
 
 *** Testing print_r() on anonymous functions ***
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 New anonymous function: \0lambda_1
-2 * 3 = 6\0lambda_2
+2 * 3 = 6
+Deprecated: Function create_function() is deprecated in %s on line %d
+\0lambda_2
 
 *** Testing error conditions ***
 
index 9821e95eaaf95128d45c35b924e01044b38d0410..78c862b77d4c8c951db3eb5af54bf5ff6a6d87d9 100644 (file)
@@ -1563,8 +1563,12 @@ array(6) {
 }
 
 *** Testing var_dump() on anonymous functions ***
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 New anonymous function: \0lambda_1
 string(9) "2 * 3 = 6"
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 string(9) "\0lambda_2"
 
 *** Testing error conditions ***
index 6bbbb3f51d97559d2b8ca00def137bb4b734c19b..3b8212204a15be252352ef272a25fd8ade036eec 100644 (file)
@@ -1563,8 +1563,12 @@ array(6) {
 }
 
 *** Testing var_dump() on anonymous functions ***
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 New anonymous function: \0lambda_1
 string(9) "2 * 3 = 6"
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 string(9) "\0lambda_2"
 
 *** Testing error conditions ***
index 5a9f7f724d269dac202d44f4f9ff2ad82ab6ba60..ffdc994f466d334aa3cb63f155ef9902ddb70e99 100644 (file)
@@ -6,4 +6,5 @@ $func = create_function('$a', 'return $a;');
 var_export($func);
 ?>
 --EXPECTF--    
+Deprecated: Function create_function() is deprecated in %s on line %d
 '' . "\0" . 'lambda_%d'
index 0cb3bf44d2e6b9a4241a411b72e8d40eb7482096..95003527992763a9b6b2c168fde1012dcf836442 100644 (file)
@@ -10,7 +10,8 @@ var_dump($func());
 var_dump($func());
 var_dump($func());
 ?>
---EXPECT--
+--EXPECTF--
+Deprecated: Function create_function() is deprecated in %s on line %d
 int(0)
 int(1)
 int(2)
index 6aed5be6e91d66154aff6b5b61463ec3aa766b08..9d5444051bd5dc16113f8346dc7700b419eb24e8 100644 (file)
@@ -7,6 +7,8 @@ Bug #22690 (ob_start() is broken with create_function() callbacks)
        echo $foo("bar\n");
 ?>
 bar
---EXPECT--
+--EXPECTF--
+
+Deprecated: Function create_function() is deprecated in %s on line %d
 BAR
 BAR
index 8f853dba4791dbef35034fe5bf508dfefba1db37..e7fd86ce7600acb7bd9aec1feae9f98b03c05562 100644 (file)
@@ -23,6 +23,7 @@ class foo {
 $a = new foo ();
 
 ?>
---EXPECT--
+--EXPECTF--
+Deprecated: Function create_function() is deprecated in %s on line %d
 FOO
 FOO