我想定義一個函數,但有兩個不同的名稱。我能做到這樣:我可以使用兩個名稱來定義相同的功能嗎?
function my1($a, $b) { ...... }
function my2($a, $b) { my1($a,$b); }
,但我很感興趣,如果有一個較短的方式,如:
function my1 & my2 ($a, $b) { ...... }
我想定義一個函數,但有兩個不同的名稱。我能做到這樣:我可以使用兩個名稱來定義相同的功能嗎?
function my1($a, $b) { ...... }
function my2($a, $b) { my1($a,$b); }
,但我很感興趣,如果有一個較短的方式,如:
function my1 & my2 ($a, $b) { ...... }
嘗試匿名函數。它允許你調用相同的功能,但名稱不同。像這樣
<?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
你可以做一個遞歸函數,而不是創建兩個相同的功能。例如:
function my1($a, $b, $is_recursive = false) {
...
if ($is_recursive) {
my1($a, $b, false);
}
}
是的!因爲你需要使用匿名函數。 一個變量保存你的函數,另一個變量引用相同的變量。
<?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。
我只是好奇爲什麼這樣?爲什麼你需要定義一個函數兩次? –
你能告訴我們你需要這樣做嗎? –
聽起來像[XY問題](http://xyproblem.info)。 –