如何查看源码?

file 举个例子如果我想查看这段的源码 我应该怎么找

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2
pardon110

Auth::guard('api')->factory()->getTTL() * 60源代码简析
本想简述你框红的代码源码逻辑,但再简还是发现以按照执行顺序下这几个类你是逃不过的。
原则:碰到找不到的方法看魔术方法,另一个就是容器解析类名或服务名

  1. Illuminate\Support\Facades\Auth, // 访问Auth(别名)类其实就是访问此类,最终返回static::$app[$name] 实例,$name为’auth‘
  2. ’\Illuminate\Auth\AuthManager‘ // 容器解析auth别名服务 最终到达此实现类实例,找寻此类guard方法
  3. Tymon\JWTAuth\Providers\LaravelServiceProvider // 在执行之前guard('api') ,因配置api 的driver项为jwt,auth别名服务已经注册了扩展jwt项驱动实现(此处代码属于注册生产代码,实际执行顺序在服务解析之后启动,注意看父类的extendAuthGuard方法)
    4.Tymon\JWTAuth\JWTGuard //在执行 Auth::guard('api')返回此类的实例
    5.\Tymon\JWTAuth\JWT //在执行Auth::guard('api')->factory()时,显然JWTGuard类中无factory方法,魔术方法指引到本类中寻找factory方法
    6.\Tymon\JWTAuth\Manager // jwt类有factory方法内部 返回调用了本Manager类的getPayloadFactory方法
    7.\Tymon\JWTAuth\Factory // 前一类的getPayloadFactory方法内,返回了本类的实例,即Auth::guard('api')->factory()指向此类实例
    8.\Tymon\JWTAuth\Claims\Factory //执行Auth::guard('api')->factory()->getTTL() 返回 调用本类的getTTL() 方法
    即返回本类ttl属性值,而这个值是即是来自于jwt配置文件内的值,如若无配置文件会从jwt的copmoser包内的配置获取默认值(这类动作在jwt相关服务注册阶段就干了)
    // Illuminate\Support\Facades\Auth.php
    // 当你访问\Auth::guard('api') 先找到,最终
    public static function __callStatic($method, $args)
    {
        $instance = static::getFacadeRoot();  // 返回从容器中解析的服务别名‘auth’ 实例,即 \Illuminate\Auth\AuthManager实例
        return $instance->$method(...$args);
    }

    本想一步步写完,一看已经这么长了,兄弟你还是看源码吧。

5年前 评论
liyu001989

你可以安装一些编辑器的插件进行代码跳转,或者按代码逻辑,依次查看尝试找到源码。

5年前 评论
pardon110

Auth::guard('api')->factory()->getTTL() * 60源代码简析
本想简述你框红的代码源码逻辑,但再简还是发现以按照执行顺序下这几个类你是逃不过的。
原则:碰到找不到的方法看魔术方法,另一个就是容器解析类名或服务名

  1. Illuminate\Support\Facades\Auth, // 访问Auth(别名)类其实就是访问此类,最终返回static::$app[$name] 实例,$name为’auth‘
  2. ’\Illuminate\Auth\AuthManager‘ // 容器解析auth别名服务 最终到达此实现类实例,找寻此类guard方法
  3. Tymon\JWTAuth\Providers\LaravelServiceProvider // 在执行之前guard('api') ,因配置api 的driver项为jwt,auth别名服务已经注册了扩展jwt项驱动实现(此处代码属于注册生产代码,实际执行顺序在服务解析之后启动,注意看父类的extendAuthGuard方法)
    4.Tymon\JWTAuth\JWTGuard //在执行 Auth::guard('api')返回此类的实例
    5.\Tymon\JWTAuth\JWT //在执行Auth::guard('api')->factory()时,显然JWTGuard类中无factory方法,魔术方法指引到本类中寻找factory方法
    6.\Tymon\JWTAuth\Manager // jwt类有factory方法内部 返回调用了本Manager类的getPayloadFactory方法
    7.\Tymon\JWTAuth\Factory // 前一类的getPayloadFactory方法内,返回了本类的实例,即Auth::guard('api')->factory()指向此类实例
    8.\Tymon\JWTAuth\Claims\Factory //执行Auth::guard('api')->factory()->getTTL() 返回 调用本类的getTTL() 方法
    即返回本类ttl属性值,而这个值是即是来自于jwt配置文件内的值,如若无配置文件会从jwt的copmoser包内的配置获取默认值(这类动作在jwt相关服务注册阶段就干了)
    // Illuminate\Support\Facades\Auth.php
    // 当你访问\Auth::guard('api') 先找到,最终
    public static function __callStatic($method, $args)
    {
        $instance = static::getFacadeRoot();  // 返回从容器中解析的服务别名‘auth’ 实例,即 \Illuminate\Auth\AuthManager实例
        return $instance->$method(...$args);
    }

    本想一步步写完,一看已经这么长了,兄弟你还是看源码吧。

5年前 评论

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