如何在laravel中扩展Illuminate \ Routing \ Route?

时间:2016-10-07 10:59:52

标签: php laravel laravel-5.2

我想扩展Illuminate \ Routing \ Route并以这种方式使用它:

request()->someCustomFunction();

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

您可以编写自己的扩展Illuminate\Routing\Route的类和服务提供者中的n,您可以像这样绑定它:

public function register()
{
    $this->app->bind('Illuminate\Routing\Route', 'YourClassThanExtendsRoute');
 }

这应该有效。

答案 1 :(得分:0)

从Laravel 5开始,扩展默认路由器变得更加困难,因此该解决方案更具破解性。您所需要做的就是将以下内容添加到您的bootstrap文件中。

$app->singleton('router', \App\Services\Router::class);

您存储在App/Services/Router.php中的新路由器将如下所示:

namespace App\Services;

class Router extends \Illuminate\Routing\Router
{
    public function someCustomFunction() {
    }
}

那么您将能够做到:

Router::someCustomFunction();

在Laravel论坛here

中讨论了此解决方案