número - php function create_function() is deprecated
La función PHP 7.2 create_function() está en desuso (4)
Debería poder usar una
función anónima
(también conocida como cierre) con una llamada a la variable
$delimiter
, de esta manera:
$callbacks[$delimiter] = function($matches) use ($delimiter) {
return $delimiter . strtolower($matches[1]);
};
He usado create_function en mi aplicación a continuación.
$callbacks[$delimiter] = create_function(''$matches'', "return ''$delimiter'' . strtolower(/$matches[1]);");
Pero para PHP 7.2.0, la función create_function () está en desuso.
Alguna idea, cómo arreglar mis códigos anteriores en PHP 7.2.0.
Gracias por tu ayuda,
Esta matriz de funciones anónimas funcionó para mí, vea el código a continuación:
// This will be a dynamic name that could
// be used as a function like "namespace".
$dynamic_name = ''my_dynamic_name'';
// Here''s some variables that you could use in the scope of
// your dynamic anonymous functions.
$outerVariable = ''If I need this varible, I can use it'';
$outerVariableTwo = ''If I need this varible, I can use it too!'';
// Create an array that we can later use and turn into
// and associative array with our new dynamic anonymous functions.
$dynamicAnonFunctions = [];
// Create the first dynamic function.
$dynamicAnonFunctions[($dynamic_name."_func_one")] = function () use ($outerVariable, $dynamic_name) {
echo ''Running: function <b>''.$dynamic_name .''_func_one()</b>'';
echo ''<br><br>'';
echo $outerVariable;
echo ''<br><br>'';
echo ''This works :)'';
echo ''<br><br>'';
};
// Create the second dynamic function
$dynamicAnonFunctions[($dynamic_name."_func_two")] = function () use ($outerVariableTwo, $dynamic_name) {
echo ''- - - - - - - - - - - - - - - - - - - '';
echo ''<br><br>'';
echo ''Running: function <b>''.$dynamic_name .''_func_two()</b>'';
echo ''<br><br>'';
echo $outerVariableTwo;
echo ''<br><br>'';
echo ''This also works :)!'';
echo ''<br><br>'';
};
// Call the functions.
$dynamicAnonFunctions[($dynamic_name."_func_one")]();
$dynamicAnonFunctions[($dynamic_name."_func_two")]();
// Halt execution.
exit();
Simplemente copie esto en su archivo de script y verá el resultado de las declaraciones de
echo
, luego simplemente reasigne la función a su voluntad.
Codificación feliz =)
Me gustaría contribuir con un caso muy simple que encontré en un tema de Wordpress y parece funcionar correctamente:
Tener la siguiente instrucción add_filter :
add_filter( ''option_page_capability_'' . ot_options_id(), create_function( ''$caps'', "return ''$caps'';" ), 999 );
Reemplácelo por:
add_filter( ''option_page_capability_'' . ot_options_id(), function($caps) {return $caps;},999);
Podemos ver el uso de function (), creación de funciones muy típica en lugar de una función create_function () obsoleta para crear funciones. Espero eso ayude.
Si alguien necesita actualizar docenas de casos
create_function()
en su código a funciones anónimas, trabajo en una herramienta llamada
Rector
.
Revisa el código y reemplaza la función
create_function
con funciones anónimas 1: 1.
Se probó en
30 casos diferentes
.
Instalar
composer require rector/rector --dev
Preparar
# rector.yml
services:
Rector/Php/Rector/FuncCall/CreateFunctionToAnonymousFunctionRector: ~
Ejecuta tu código
vendor/bin/rector process src --config rector.yml --dry-run
vendor/bin/rector process src --config rector.yml