Laravel 5.5扩展或覆盖包控制器

Jos*_*uce 5 php laravel php-7 laravel-5.5

Laravel 5.5在扩展(或覆盖)主应用程序外部的控制器而基本上不重写应用程序中包前端的约定是什么?

我有一个带有自己的路由和控制器的程序包。我遇到了两种情况,在其中一个控制器中重写方法将是解决问题的一种好方法。但是,我自己提出的解决方案似乎并不理想。我似乎经常不需要这些东西,因为这些软件包可以很好地发挥自己的作用。

根据要求提供的经过考虑的解决方案

选项1:我认为这是一种相对干净的方法,但是如果将来对路线进行更新,可能会导致问题,我将必须对其进行监视,并确保手动更新修改后的包含物。

  • 使路由文件成为的一部分$ php artisan vendor:publish
  • 将路线呼叫从更新Route::get('/', PackageController::class .'@index');Route::get('/', MyController::class .'@index');
  • 创建App\Http\Controllers\MyController并扩展它Vendor\Package\Controllers\PackageController
  • 覆盖public function index()MyController

选项2:使其成为软件包配置的一部分。似乎不尽理想,因为现在路由关联位于两个位置,而且我不确定是否会影响性能,以及是否会不断引用配置以便在调用路由时设置控制器。

  • 添加的字典'PackageController' => ['route_name', 'route_name']
  • 使用编辑配置MyController

Option canonical(??):确实希望有一种规范的方法来解决这个问题。或者,大多数为Laravel编写的软件包是否具有更多实用程序(我使用的大多数都是(除了正在创建的))?