我有这条路线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 关注
- 95 浏览
添加回答
举报
0/150
提交
取消