莫名其妙的 Non-static method

今天写接口的时候

无论访问什么接口都出现了这个错误

命名前一天啥都可以访问的

ErrorException (E_DEPRECATED)
Non-static method Illuminate\Routing\Route::middleware() should not be called statically

莫名奇妙的,找了许久的文档和文章还有系统日志,都找不出任何原因。

对比了一下git之前源码版本,发现了api.php出现了以下的use;

use Illuminate\Http\Request;
use Illuminate\Routing\Route;

跟之前的版本对比多出了

use Illuminate\Routing\Route;

没错!就是在写路由的时候不小心引入了这个Route,删除掉即可,暂时先这样,后面找时间了解下为啥子。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1

查看 config/app.php文件的aliases字段可以发现Route 映射的是Illuminate\Support\Facades\Route::class门面。 门面类中含有以下代码

    protected static function getFacadeAccessor()
    {
        return 'router';
    }

同时在路由服务提供者Illuminate\Routing\RoutingServiceProvider::class中,把router服务定义为Illuminate\Routing\Router::class

    protected function registerRouter()
    {
        $this->app->singleton('router', function ($app) {
            //   Router 与 RoutingServiceProvider 在同一目录 省略 use
            return new Router($app['events'], $app);
        });
    }

你配置路由的时候使用的是Illuminate\Routing\Route::class,前者用来定义路由,后者属于被定义的路由

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!