Php Laravel包寄存器异常处理程序
我想知道是否有可能在Laravel5中的包中注册第二个异常处理程序 我有一个包(我们称之为api serializer),它注册了一个中间件来将所有请求转换为JSON(对于api),这个包注册了两个助手:Php Laravel包寄存器异常处理程序,php,laravel-5,service-provider,Php,Laravel 5,Service Provider,我想知道是否有可能在Laravel5中的包中注册第二个异常处理程序 我有一个包(我们称之为api serializer),它注册了一个中间件来将所有请求转换为JSON(对于api),这个包注册了两个助手:success()和failure(),它们在发生错误(或不发生错误)时专门处理JSON 在我的应用程序异常处理程序中,我执行以下操作: /** * Render an exception into an HTTP response. * * @param \Illuminate\Htt
success()
和failure()
,它们在发生错误(或不发生错误)时专门处理JSON
在我的应用程序异常处理程序中,我执行以下操作:
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $e
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $e)
{
return failure($e->getMessage());
}
现在我有了第二个包(我们称之为tumblrapi),它可以进行http调用并引发异常,例如:
throw (new CustomCoolException)->setModel($model);
我希望以不同的方式处理此异常,因为消息位于$model
中,请执行以下操作:
if ($e instanceof CustomCoolException) {
return failure($e->getModel()->getMessage());
}
class YourPackageController extends Controller
{
public function __construct()
{
\App::singleton(
\Illuminate\Contracts\Debug\ExceptionHandler::class,
YourExceptionHandler::class
);
}
我不想做的是将包异常添加到我的主异常处理程序中,因为它们将被紧密绑定
我不想在向tumblr api包公开success()
和failure()
的api序列化程序之间创建依赖关系
是否可以从我的api序列化程序注册第二个ExceptionHandler或为其异常添加特定的开关,而不更改任何其他内容
我想让我的TumblrAPI包尽可能独立,所以安装它的用户只需注册服务提供商就可以了 您可以在包的控制器中使用自己包的异常处理程序覆盖应用程序的异常处理程序,如下所示:
if ($e instanceof CustomCoolException) {
return failure($e->getModel()->getMessage());
}
class YourPackageController extends Controller
{
public function __construct()
{
\App::singleton(
\Illuminate\Contracts\Debug\ExceptionHandler::class,
YourExceptionHandler::class
);
}
信用卡将在