我有一個功能:
public static function linkClient(Request $request){
//do things
}
這個函式被兩個不同的東西呼叫。1 是帶有發布資料的發布請求。在這種情況下,這很好用:
public static function linkClient(Request $request){
$data = $request->all();
// do things with data
}
對該函式的第二次呼叫傳遞了 2 個字串。我怎樣才能使這個函式可以處理請求或字串?
用外行的話,我會寫:
public static function linkClient(Request $request or $string1,$string2){
if ($request){
$data = $request->all();
//do things to request
}
if($string1 or $string2){
//do string things
}
}
uj5u.com熱心網友回復:
您正在尋找的是函式多載,這是 php 不支持的。您可以嘗試使用以下方法將其破解:
https://stackoverflow.com/a/4697712/3150636
在哪里檢測到傳入的引數 usingfunc_num_args并從那里分支。
uj5u.com熱心網友回復:
自 PHP 8.0 起,PHP 支持聯合型別:
public static function linkClient(Request|string $request, $string2){
if ($request instanceof Request){
$data = $request->all();
//do things to request
} else {
//do string things to $request
}
}
缺點是沒有內置機制來確保您使用單個Request引數或兩個string引數呼叫函式,因為僅檢查第一個引數。
uj5u.com熱心網友回復:
使用splat運算子。https://lornajane.net/posts/2014/php-5-6-and-the-splat-operator
public static function linkClient(...$paras)
{
if (count($paras) == 1) {
echo 'Request $request passed';
return;
}
echo 'Strings passed';
print_r($paras);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/422357.html
標籤:
