2017-04-17 42 views
0

我想定义一个函数,但有两个不同的名称。我能做到这样:我可以使用两个名称来定义相同的功能吗?

function my1($a, $b) { ...... } 
function my2($a, $b) { my1($a,$b); } 

,但我很感兴趣,如果有一个较短的方式,如:

function my1 & my2 ($a, $b) { ...... } 
+4

我只是好奇为什么这样?为什么你需要定义一个函数两次? –

+0

你能告诉我们你需要这样做吗? –

+5

听起来像[XY问题](http://xyproblem.info)。 –

回答

5

尝试匿名函数。它允许你调用相同的功能,但名称不同。像这样

<?php 
$function_1 = $function_2 = function($a,$b){ //The anonymous function is assigned names $function_1 & $function_2. 
    echo $a.' - '.$b; 
}; 

$function_1('a','b'); 

$function_2('1','2'); 
?> 

阅读完整的参考here

0

你可以做一个递归函数,而不是创建两个相同的功能。例如:

function my1($a, $b, $is_recursive = false) { 
    ... 

    if ($is_recursive) { 
     my1($a, $b, false); 
    } 
} 
-1

是的!因为你需要使用匿名函数。 一个变量保存你的函数,另一个变量引用相同的变量。

<?php 
// Define function 
$say_hello_1 = function() 
{ 
    echo "Hello"; 
}; 

// Refer to same function with different name 
$say_hello_2 = $say_hello_1; 

// Call to both of them 
$say_hello_2(); 
$say_hello_1(); 

这两个调用表示相同的函数并打印两次Hello。

+0

现有答案有什么不同? – jmattheis

+0

答案在我写作的同时发布! – Nilay

+1

kk,在你的代码中有一个\'输入代码' – jmattheis

相关问题