我们正在重组应用程序的文件夹布局,使其更符合
DDD
域驱动程序设计理念。
例如
/app
/Users
/Jobs
/Authentication
/Http
/Console
/...
/bootstrap
/config
/...
尽管我们遇到的一个问题是重新定位
/Exceptions/Handler.php
类。我们的视图会将其重命名为 ExceptionHandler
并将其放置在 /app
目录的根目录中。
我们得到
PHP 致命错误:未捕获的 ReflectionException:类 App\Exceptions\Handler 不存在...
重新定位后出现错误。
我假设 Laravel 对该文件位于该确切位置有很强的依赖性,这是正确的吗?
您还必须更新它在服务容器中的绑定。 下面的示例来自 Laravel 5.2,但我猜它对于所有 Laravel 5+ 应该是相同的。
// bootstrap/app.php
$app->singleton(
Illuminate\Contracts\Debug\ExceptionHandler::class,
App\Exceptions\Handler::class // Change this line with the new namespace
);
对于 laravel >= 7 使用 Throwable 代替 exceptions/Handler.php 中的异常
使用Throwable;
公共函数报告(可抛出$异常);
公共函数渲染($请求,可抛出$异常);