查看: 131|回复: 0

    PHP框架laravel源码的非正式解读:路由的载入与对比,你知道哪些

    [复制链接]
  • TA的每日心情

    2018-1-24 18:38
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    21

    主题

    27

    帖子

    156

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    156

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

    发表于 2018-1-24 18:52:22 | 显示全部楼层 |阅读模式
      
      我们知道使用的laravel时,路由是很重要的,一般我们都在route/web.php注册路由。那么它的整个流程又是怎样的呢?
      首先来看入口文件public/index.php,文件载入 Composer 生成的自动加载设置,后加入bootstrap/app.php,让所有请求都要经过的中央处理器Http/Kernel.php
    index.php找到Kernel类
      经过handlesendRequestThroughRouter
    kernel.php
      在sendRequestThroughRouter发现经由bootstrap函数
    kernel.php
      在经过Application的bootstrapWith实现相关服务的装载
    kernel.php,$boostrappers中的类
    Application.php
      装载需要的服务后立刻执行bootstrap方法,先来看看IlluminateFoundationBootstrapRegisterProviders类中方法
      RegisterProviders.php
      然后发现又调用了Application中的registerConfiguredProviders
    Application.php
      我们可以发现一个load的函数,应该是加载类的,看看$this->config['app.providers']中有哪些类
    这里我们发现了路由服务
    在这里我们web.php就被加载进来了
      当我们请求的时候就会进行对比,从而决定下一步的流程。
    对比函数
      这里的流程很简单就找到了,就不详细介绍了。只要url地址出错就能找到这里
    就像这样
      找了很久才找到,因为Laravel使用服务提供者让整个流程变得很复杂。




    上一篇:全自定义环境,一键快速安装PHP7.2版本,32/64位系统任选
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|好站群 ( 苏ICP备15018248号-1

    GMT+8, 2018-4-23 06:05 , Processed in 0.217027 second(s), 37 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表