2017-04-17 68 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

相關問題