Laravel 中根据 url 返回特定类

我有这条路线


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返回()类,但它不起作用


冉冉说
浏览 96回答 1
1回答

MM们

PHP 可以基于字符串执行很多语法,因此如果您的输入名称始终是类名,则将第一个字符设为大写。您应该能够执行以下操作。$className = "App\Models\\" . ucfirst($mail);return new $className();这还要求命名空间之间存在关系,另一种方法是将输入映射到输出。protected $classMap = [    'verification' => Verification::class,]return new $this->classMap[$mail]();你很快就会陷入滑坡,也许是时候考虑一下你是否想变得如此通用了。这一切都取决于用例,我认为通用类实例化不应该应用在任何可以应用的地方。
打开App,查看更多内容
随时随地看视频慕课网APP