我有這條路線Route::get('/mailable/{mail}', [TestController::class, 'mailable'])->where('mail', '(verification)');基于{mail}url 的 od 我想從我的控制器返回特定的類public function mailable($mail){ if ($mail == 'verification') { return new Verification(); }}有沒有更好的方法來做到這一點,否則我需要發表數千條if聲明。或者我應該使用switch?我也嘗試連接$mail返回()類,但它不起作用
1 回答

MM們
TA貢獻1886條經驗 獲得超2個贊
PHP 可以基于字符串執行很多語法,因此如果您的輸入名稱始終是類名,則將第一個字符設為大寫。您應該能夠執行以下操作。
$className = "App\Models\\" . ucfirst($mail);
return new $className();
這還要求命名空間之間存在關系,另一種方法是將輸入映射到輸出。
protected $classMap = [
'verification' => Verification::class,
]
return new $this->classMap[$mail]();
你很快就會陷入滑坡,也許是時候考慮一下你是否想變得如此通用了。這一切都取決于用例,我認為通用類實例化不應該應用在任何可以應用的地方。
- 1 回答
- 0 關注
- 118 瀏覽
添加回答
舉報
0/150
提交
取消