如何像取消设置变量一样取消设置函数定义?

php
2022-08-30 15:40:11

我想定义一个函数,并在使用后取消设置它,就像我们对变量所做的那样。

$a = 'something';
unset($a);
echo $a; // outputs nothing

就像这样,如果我声明一个函数calportMethod(),有没有办法取消设置它?


答案 1

从 PHP 5.3 开始,您可以将匿名函数分配给变量,然后将其取消设置:

$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

在 5.3 之前,您可以使用 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

答案 2

runkit_function_remove删除函数定义 http://php.net/manual/en/function.runkit-function-remove.php


推荐