descargar - php manual
¿Cómo desarmar una definición de función como desarmamos una variable? (4)
A partir de PHP 5.3, puede asignar una función anónima a una variable, luego desarmarla:
$upper = function($str) {
return strtoupper($str);
};
echo $upper(''test1'');
// outputs: TEST1
unset($upper);
echo $upper(''test2'');
// Notice: Undefined variable: upper
// Fatal error: Function name must be a string
Antes de la versión 5.3, puedes hacer algo similar con create_function()
$func = create_function(''$arg'', ''return strtoupper($arg);'');
echo $func(''test1'');
unset($func);
$func2 = "/0lambda_1";
echo $func2(''test2.a''), "/n"; // Same results, this is the "unset" $func function
echo $func(''test2.b''); // Fatal Error
Quiero definir una función y anularla después de su uso tal como lo hacemos con las variables.
$a = ''something'';
unset($a);
echo $a; // outputs nothing
De esta forma, si declaro una función callMethod () , ¿hay alguna forma de anularla?
De esta pregunta :
Puedes usar rename_function
<?php rename_function(''original_name'', ''new_name'' ); ?>
y luego volver a declarar la función original.
override_function puede funcionar también.
Son parte del Zend PHP Debugger, si eso no funciona, siempre puedes probar algo como:
function function1(){
echo "1";
}
function function2(){
echo "2";
}
$i = "function2";
$i(); // displays 2;
Para los que dudan, tiene mucho sentido querer eliminar una función. Si tiene una función que utiliza una gran cantidad de datos solo una vez al principio de su secuencia de comandos, es lógico que desee eliminarla.
Un tipo de función de este tipo puede ser la función de detección móvil / tableta de un script o marco. Solo se necesita una vez y es probable que tome una cantidad significativa de memoria para una función que se ejecuta solo una vez. Si tiene alguna duda, consulte https://github.com/serbanghita/Mobile-Detect/blob/master/Mobile_Detect.json
Dicho esto, hay una manera de evitar el problema sin necesidad de eliminar la función. Para lo que vale la pena, haga globales todas las matrices utilizadas por la función y al final de la función, anule la configuración de todas ellas. La función se mantiene pero los datos voluminosos van. Tenga en cuenta que cuando desactiva una variable, depende del recolector de basura de PHP decidir cuándo se liberará la memoria. Y liberar la memoria quita los ciclos de la CPU de su aplicación. Realmente no puedo ver ningún script PHP que requiera desarmar una función.
runkit_function_remove - Eliminar una definición de función http://php.net/manual/en/function.runkit-function-remove.php