Ati*_*din 53 php alias function
是否可以在PHP中使用不同的名称对函数进行别名?如果有,怎么样?
假设我们有这个函数sleep();
有没有快速的方法来创建一个名为wait()的别名;
不写这段代码
function wait( $seconds ) {
sleep($seconds);
}
Run Code Online (Sandbox Code Playgroud)
Luk*_*man 62
function wait ($seconds) { sleep($seconds); }是的,是要走的路.但如果您担心必须更改wait(),您应该更改sleep()的参数数量,那么您可能需要执行以下操作:
function wait() {
return call_user_func_array("sleep", func_get_args());
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*Jon 51
从PHP 5.6开始,可以通过导入来对别名进行别名:
use function sleep as wait;
Run Code Online (Sandbox Code Playgroud)
Fed*_*oca 27
不,但你可以这样做:
$wait = 'sleep';
$wait($seconds);
Run Code Online (Sandbox Code Playgroud)
这样您还可以解决参数号问题
Óla*_*age 21
如果你有PHP 5.3,你也可以看看lambdas
$wait = function($v) { return sleep($v); };
Run Code Online (Sandbox Code Playgroud)
如果你不关心使用PHP的"eval"指令(许多人都有真正的问题,但我没有),那么你可以使用这样的东西:
function func_alias($target, $original) {
eval("function $target() { \$args = func_get_args(); return call_user_func_array('$original', \$args); }");
}
Run Code Online (Sandbox Code Playgroud)
我在一些简单的测试中使用它,它似乎工作得相当好.这是一个例子:
function hello($recipient) {
echo "Hello, $recipient\n";
}
function helloMars() {
hello('Mars');
}
func_alias('greeting', 'hello');
func_alias('greetingMars', 'helloMars');
greeting('World');
greetingMars();
Run Code Online (Sandbox Code Playgroud)
不,功能不是一等公民,所以没有wait = sleep像Javascript那样的例子.你基本上必须做你在问题中所做的事情:
function wait ($seconds) { sleep($seconds); }
Run Code Online (Sandbox Code Playgroud)