Php 我不应该对非http请求使用Laravel控制器吗

Php 我不应该对非http请求使用Laravel控制器吗,php,laravel,laravel-5,laravel-routing,Php,Laravel,Laravel 5,Laravel Routing,我正在设计一个模块,接收“通知请求”,呈现它,并通过电子邮件或短信发送它。经过几次修改后,我意识到,我基本上是在向控制器发出请求、传递参数和渲染视图 我打算做一些类似的事情 $request = Request::create('api/items', 'GET', $params); return Route::dispatch($request)->getContent(); App\Sms\Controllers\UserController.php。在其中我将有getNewUse

我正在设计一个模块,接收“通知请求”,呈现它,并通过电子邮件或短信发送它。经过几次修改后,我意识到,我基本上是在向控制器发出请求、传递参数和渲染视图

我打算做一些类似的事情

$request = Request::create('api/items', 'GET', $params);
return Route::dispatch($request)->getContent();
App\Sms\Controllers\UserController.php
。在其中我将有
getNewUser($user)
。我将捕获它的输出,并将其传递给我的SMS API

我的问题是,通过从
illumb\Routing\Controller.php
中进行子类化,我是否需要注意一些负面的东西

我可以想到的一些例子包括必须隐藏/阻止这些路由通过http被命中

我会用类似的方式给控制器打电话

$request = Request::create('api/items', 'GET', $params);
return Route::dispatch($request)->getContent();

这正是命令总线的用途(不要与Artisan命令混淆)


这些允许您从应用程序中的任何位置发出“命令”,并相应地处理该命令

直接调用
Route::dispatch
有两个负面影响

首先,您丢失了
路由::getCurrentRoute()
,因此无法找到您所在的URL。这对我来说也是个大问题

我最后做了一件事

$this->router=新路由器(app('events'),app());
$request=request::create($url,'GET');
输入::初始化($event->toArray());
$out=$this->router->dispatch($request)->getContent()

这样,我的getCurrentRoute就不会受到影响


第二,调用堆栈变得很深-您可能会达到100 xdebug限制-

我正在使用命令总线触发发送SMS/电子邮件-但我仍然想解析“主题”和“消息”。不确定这是什么意思?难道你不能将这些信息传递到命令中吗?我关注的部分是,从一个路由,比如说/add user notification/userid,或者/delete user notification/userid,获取命令的正确数据(在本例中是user对象),并获取命令的正确视图,然后,通过短信或电子邮件发送数据。我应该(或者当我使用route::dispatch(/add user-notification)还是直接使用$smsMessageStore->getMessage('add-user-notification')。我希望这有助于澄清这一点