Thinkphp5.1源码阅读

主要流程

 

1 \public\index.php

require __DIR__ . '/../thinkphp/start.php';

2 \thinkphp\start.php

require __DIR__ . '/base.php';
// 执行应用并响应
Container::get('app', [defined('APP_PATH') ? APP_PATH : ''])
    ->run()
    ->send();

  2.1 \thinkphp\base.php

require __DIR__ . '/library/think/Loader.php';
// 注册自动加载
Loader::register();
// 注册核心类到容器
Container::getInstance()->bind([
    'app'                   => App::class, //App::class ≈ string(9) "think\App"
//...
    'view'                  => View::class,
//...
]);

3 \thinkphp\library\think\App.php

 
  
public function run()
{
// 初始化应用
$this->initialize(); //主要加载配置,助手函数
// 执行调度
$data = $dispatch->run(); //$dispatch = object(think\route\dispatch\Url)
//...
$response = Response::create(); //\thinkphp\library\think\Response.php
//...
return $response;

  3.1 thinkphp\library\think\route\dispatch\Url.php

public function run()
{
    // 解析默认的URL规则
    $url    = str_replace($this->param['depr'], '|', $this->dispatch);
    $result = $this->parseUrl($url);
    return (new Module($result))->run();
}

      3.1.1 thinkphp\library\think\route\dispatch\Module.php

public function run()
{
// 实例化控制器
    $instance = $this->app->controller( //thinkphp\library\think\App.php
//...
  $call = [$instance, $action]; //$instance = object(app\user\controller\Home)
//...
  return Container::getInstance()->invokeMethod($call, $vars);

    3.2 \thinkphp\library\think\Response.php

public static function create($data = '', $type = '', $code = 200, array $header = [], $options = [])
    {
     //...
if (class_exists($class)) { return new $class($data, $code, $header, $options); } else { return new static($data, $code, $header, $options); } }

  4

//发送数据到客户端
public function send()
    {
//...
echo $data;

 

控制器中 $this->fetch()

thinkphp\library\think\Controller.php

public function __construct()
    {
        $this->request = Container::get('request');
        $this->app     = Container::get('app');
        $this->view    = Container::get('view')->init(
            $this->app['config']->pull('template'),
            $this->app['config']->get('view_replace_str')
        );
protected function fetch($template = '', $vars = [], $replace = [], $config = [])
    {
        return $this->view->fetch($template, $vars, $replace, $config);
    }

thinkphp\library\think\View.php

public function init($engine = [], $replace = [])
    {
        // 初始化模板引擎
        $this->engine($engine); 
public function engine($options = [])
{
  
$type = !empty($options['type']) ? $options['type'] : 'Think';   $class = false !== strpos($type, '\\') ? $type : '\\think\\view\\driver\\' . ucfirst($type);
  $this->engine = new $class($options); //$this->engine = thinkphp\library\think\view\driver\Think.php
  return $this;
}

 

转载于:https://www.cnblogs.com/8000cabbage/p/7508271.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于ThinkPHP 5.1框架打造的多商户电商平台,是目前完善度领先的电商管理平台标准化产品,全新的产品模式很好地诠释电子商务在现今及未来的发展模式,强大的插件可插拔扩展制,让您在的行业电商所向披靡,系统拥有PC、手机WAP、微商城、买家APP、卖家APP、微信小程序,六端合一,六端互通,真正实现全网营销,极其适合企业及个人快速上线商务平台。 系统代码清晰易懂,大量的可视化报表便于运营者决策,丰富的营销功能让系统的应用场景广阔,良好的插件机制使系统更加易于扩展。系统操作简单,安全稳定,更新迭代快速,是广大用户直接使用和二次开发的最佳选择。 电商系统功能 (一) 系统管理:菜单权限、前台菜单、角色管理、职员管理、登录日志、操作日志、图片空间、商城消息、风格设置、计划任务 (二) 基础设置:商城配置、导航管理、广告管理、广告位置、银行管理、支付管理、地区管理、友情链接、快递管理、消息模板 (三) 会员管理:会员等级、会员管理、账号管理 (四) 文章管理:文章管理、文章分类 (五) 运营管理:推荐管理、商品推荐、店铺推荐、品牌推荐、财务管理、资金管理、提现申请、结算管理、商家结算、充值送、退款原路返回 (六) 订单管理:订单管理、投诉管理、退款管理 (七) 店铺管理:店铺认证、开店申请、店铺管理、停用店铺 (八) 商品管理:商品管理、已上架商品、待审核商品、违规商品、商品分类、商品属性、品牌管理、商品规格、评价管理 (九) 虚拟物品自动发货:虚拟商品上架、卡密管理、自动发货 (十) 扩展管理:插件管理、钩子管理 (十一) 分销管理:分销管理菜单、分销商家列表、分销商品列表、佣金分成列表、推广用户列表 (十二) 数据分析:商品销售排行、店铺销售统计、销售额统计、销售订单统计、新增会员统计、会员登录统计 (十三) 营销管理:三级分销,商品团购,限时拍卖、微砍价、优惠券、满减、满送、满包邮、签到送积分、积分商城,拼团 (十四) 微信管理:公众号设置、自定义菜单、用户管理、主动回复文本信息、主动回复图文信息、微信消息模板 (十五) 支付管理:支付宝支付,微信支付、银联支付、货到付款、积分支付、余额支付 (十六) 短信接口:中国网建、阿里大于、阿里云-云通信、短信宝 (十七) 登录接口:QQ登录、微信登录、微博登录、支付宝登录 (十八) 物流接口:快递100接口 (十九) 其他接口:LBS、UCenter通信接口(可与社区论坛等同步登录退出)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值