zoukankan      html  css  js  c++  java
  • Lumen开发:lumen源码解读之初始化(4)——服务提供(ServiceProviders)与路由(Routes)

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    前面讲了singleton和Middleware,现在来继续讲ServiceProviders和Routes,还是看起始文件bootstrap/app.php

    / *
    | --------------------------------------------------------------------------
    |登记服务提供商
    | --------------------------------------------------------------------------
    |
    |这里我们将登记所有的应用服务提供商
    |用于绑定到容器服务。服务提供商
    |完全可选的,所以你不需要注释掉这行。
    |
    * /
    
    // $app->register(AppProvidersAuthServiceProvider::class);
    // $app->register(AppProvidersEventServiceProvider::class);
    $app->register(DingoApiProviderLumenServiceProvider::class);
    $app->register(BarryvdhLaravelIdeHelperIdeHelperServiceProvider::class);
    
    $app->register(AppProvidersUserUserServiceProvider::class);
    

    前面的是Lumen自带的,后面的UserServiceProvider是我自己加的,我们先来看看AuthServiceProvider

    namespace AppProviders;
    
    use AppUser;
    use IlluminateSupportFacadesGate;
    use IlluminateSupportServiceProvider;
    
    class AuthServiceProvider extends ServiceProvider
    {
        public function register()
        {
            //
        }
    
        public function boot()
        {
            $this->app['auth']->viaRequest('api', function ($request) {
                if ($request->header('api_token')) {
                    return User:: where('api_token', '=', $request->header('api_token'))->first();
                }
            });
        }
    }
    

    这里主要有两个比较核心的函数register(注册)与boot(启动),$app->register()会先注册,后启动,这里我有写一篇:Lumen手记:lumen源码解读之初始化(5)——注册(register)与启动(boot)

    自己定义ServiceProviders也是同样道理:Lumen手记:如何向 IoC 容器中添加自己定义的类

    再来讲一下路由,路由可以说是最简单的啦,

    / *
    | --------------------------------------------------------------------------
    |负载的应用途径
    | --------------------------------------------------------------------------
    |
    |接下来我们将包括路线的文件,都可以被添加到
    |应用。这将提供应用程序的所有URL。
    |可以响应,以及可能的处理控制器。
    |
    * /
    
    $app->group(['namespace' => 'AppHttpControllers'], function ($app) {
        require __DIR__ . '/../routes/web.php';
        require __DIR__ . '/../routes/user.php';
    
    });
    

    新建几个加载进来都可以读到,不过要注意路径和不要有重复的路由喔!

     Lumen技术交流群:310493206

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    js获取当前时间,日期格式为年月日
    create-react-app里添加less
    react css 模块化
    react 点击父级元素 不触发子级元素click事件
    react-router-dom 实现路由左右滑动进入页面的效果
    vue路由左右侧滑动 react路由左右侧滑动
    react 父组件不能直接在子组件上加className,也得用props传递过去
    react 父组件调用子组件方法
    css滚动相关问题记录
    javascript异步编程的几种方法
  • 原文地址:https://www.cnblogs.com/cxscode/p/7569865.html
Copyright © 2011-2022 走看看