Thinkphp5类加载机制

Thinkphp5类加载机制


PS:本文适用于熟悉Thinkphp框架或其他MVC框架,对于命名空间及自动加载类,有一定理解的程序工作者观看(其实是写给自己看的>_<—予怀之言)

我一直对于thinkphp5的加载运行的时候做了什么,他是怎么自动加载类的,是和composer一样的吗—能否实现运行时再加载类,于是做了一下测试,追踪了整个加载流程。

 

以文件为单位进行讲解:

入口文件index.php

<?php
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';

 

1. 定义了APP_PATH常量

2. 加载start.php文件

 

start.php文件

<?php
namespace think;

// ThinkPHP 引导文件
// 加载基础文件
require __DIR__ . '/base.php';
// 执行应用
App::run()->send();

 

1. 加载base.php

2. 执行App类的静态方法run(),再执行返回值的send()方法

来到这里,出现两个问题,App类。。。是从哪里加载进来的呢?看看base.php

 

base.php文件

<?php
define('THINK_VERSION', '5.0.3');
define('THINK_START_TIME', microtime(true));
define('THINK_START_MEM', memory_get_usage());
define('EXT', '.php');
define('DS', DIRECTORY_SEPARATOR);
defined('THINK_PATH') or define('THINK_PATH', __DIR__ . DS);
define('LIB_PATH', THINK_PATH . 'library' . DS);
define('CORE_PATH', LIB_PATH . 'think' . DS);
define('TRAIT_PATH', LIB_PATH . 'traits' . DS);
defined('APP_PATH') or 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值