Skip to content

thinkphp初始化线路

php
<?php
// [ 应用入口文件 ]

namespace think;

require __DIR__ . '/../vendor/autoload.php';

// 执行HTTP应用并响应
$http = (new App())->http;

$response = $http->run();

$response->send();

$http->end($response);

第一步

php
//在入口文件中查看文件加载情况
require __DIR__ . '/../vendor/autoload.php';
dump(get_included_files());//获取取加载的文件信息
//$array=[
//  0 => "F:\thinkphpsource\public\router.php",
//  1 => "F:\thinkphpsource\public\index.php",
//  2 => "F:\thinkphpsource\vendor\autoload.php",
//  3 => "F:\thinkphpsource\vendor\composer\autoload_real.php",
//  4 => "F:\thinkphpsource\vendor\composer\platform_check.php",
 // 5 => "F:\thinkphpsource\vendor\composer\ClassLoader.php",
 // 6 => "F:\thinkphpsource\vendor\composer\autoload_static.php",
//  7 => "F:\thinkphpsource\vendor\topthink\think-helper\src\helper.php",
 // 8 => "F:\thinkphpsource\vendor\topthink\think-orm\stubs\load_stubs.php",
 // 9 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Exception.php",
 // 10 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Facade.php",
 // 11 => "F:\thinkphpsource\vendor\symfony\polyfill-mbstring\bootstrap.php",
//  12 => "F:\thinkphpsource\vendor\symfony\polyfill-php72\bootstrap.php",
//  13 => "F:\thinkphpsource\vendor\symfony\polyfill-php80\bootstrap.php",
//  14 => "F:\thinkphpsource\vendor\symfony\var-dumper\Resources\functions\dump.php",
//]

第二步

php
require __DIR__ . '/../vendor/autoload.php';
new App();
dump(get_included_files());
//此实例化增加了车个文件
//$array =[
//  15 => "F:\thinkphpsource\vendor\topthink\framework\src\think\App.php",
//  16 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Container.php",
//  17 => "F:\thinkphpsource\vendor\psr\container\src\ContainerInterface.php",
//  18 => "F:\thinkphpsource\app\provider.php",
//]

new App();实例化增加的文件看,使用了topthink\framework\src\think\App.php类,然而App类是继承Container.php,Container.php使用了prs里面的ContainerInterface.php这个接口,查看App.php类的信息

php
 public function __construct(string $rootPath = '')
    {
        $this->thinkPath   = dirname(__DIR__) . DIRECTORY_SEPARATOR;
        $this->rootPath    = $rootPath ? rtrim($rootPath, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR : $this->getDefaultRootPath();
        $this->appPath     = $this->rootPath . 'app' . DIRECTORY_SEPARATOR;
        $this->runtimePath = $this->rootPath . 'runtime' . DIRECTORY_SEPARATOR;
        //此函数加载app\provider.php文件
        if (is_file($this->appPath . 'provider.php')) {
            $this->bind(include $this->appPath . 'provider.php');
        }

        static::setInstance($this);

        $this->instance('app', $this);
        $this->instance('think\Container', $this);
    }

第三步

php
require __DIR__ . '/../vendor/autoload.php';


// 执行HTTP应用并响应
$http = (new App())->http;

$response = $http->run();
dump(get_included_files());

//$array=[
//  21 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Env.php"
//  22 => "F:\thinkphpsource\app\common.php"
//  23 => "F:\thinkphpsource\vendor\topthink\framework\src\helper.php"
//  24 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Config.php"
//  25 => "F:\thinkphpsource\config\app.php"
//  26 => "F:\thinkphpsource\vendor\topthink\framework\src\think\facade\Env.php"
//  27 => "F:\thinkphpsource\config\cache.php"
//  28 => "F:\thinkphpsource\config\console.php"
//  29 => "F:\thinkphpsource\config\cookie.php"
//  30 => "F:\thinkphpsource\config\database.php"
//  31 => "F:\thinkphpsource\config\filesystem.php"
//  32 => "F:\thinkphpsource\config\lang.php"
//  33 => "F:\thinkphpsource\config\log.php"
//  34 => "F:\thinkphpsource\config\middleware.php"
//  35 => "F:\thinkphpsource\config\route.php"
//  36 => "F:\thinkphpsource\config\session.php"
//  37 => "F:\thinkphpsource\config\trace.php"
//  38 => "F:\thinkphpsource\config\view.php"
//  39 => "F:\thinkphpsource\app\event.php"
//  40 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Event.php"
//  41 => "F:\thinkphpsource\app\service.php"
//  42 => "F:\thinkphpsource\app\AppService.php"
//  43 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Service.php"
//  44 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Lang.php"
//  45 => "F:\thinkphpsource\vendor\topthink\framework\src\lang\zh-cn.php"
//  46 => "F:\thinkphpsource\vendor\topthink\framework\src\think\initializer\Error.php"
//  47 => "F:\thinkphpsource\vendor\topthink\framework\src\think\initializer\RegisterService.php"
//  48 => "F:\thinkphpsource\vendor\services.php"
//  49 => "F:\thinkphpsource\vendor\topthink\framework\src\think\service\PaginatorService.php"
//  50 => "F:\thinkphpsource\vendor\topthink\framework\src\think\service\ValidateService.php"
//  51 => "F:\thinkphpsource\vendor\topthink\framework\src\think\service\ModelService.php"
//  52 => "F:\thinkphpsource\vendor\topthink\think-trace\src\Service.php"
//  53 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Middleware.php"
//  54 => "F:\thinkphpsource\vendor\topthink\framework\src\think\initializer\BootService.php"
//  55 => "F:\thinkphpsource\vendor\topthink\think-orm\src\Paginator.php"
//  56 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Validate.php"
//  57 => "F:\thinkphpsource\vendor\topthink\think-orm\src\Model.php"
//  58 => "F:\thinkphpsource\vendor\topthink\think-helper\src\contract\Arrayable.php"
//  59 => "F:\thinkphpsource\vendor\topthink\think-helper\src\contract\Jsonable.php"
//  60 => "F:\thinkphpsource\vendor\topthink\think-orm\src\model\concern\Attribute.php"
//  61 => "F:\thinkphpsource\vendor\topthink\think-orm\src\model\concern\RelationShip.php"
//  62 => "F:\thinkphpsource\vendor\topthink\think-orm\src\model\concern\ModelEvent.php"
//  63 => "F:\thinkphpsource\vendor\topthink\think-orm\src\model\concern\TimeStamp.php"
//  64 => "F:\thinkphpsource\vendor\topthink\think-orm\src\model\concern\Conversion.php"
//  65 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Db.php"
//  66 => "F:\thinkphpsource\vendor\topthink\think-orm\src\DbManager.php"
//  67 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Log.php"
//  68 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Manager.php"
//  69 => "F:\thinkphpsource\vendor\psr\log\Psr\Log\LoggerInterface.php"
//  70 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Cache.php"
//  71 => "F:\thinkphpsource\vendor\psr\simple-cache\src\CacheInterface.php"
//  72 => "F:\thinkphpsource\vendor\topthink\think-helper\src\helper\Arr.php"
//  73 => "F:\thinkphpsource\vendor\topthink\framework\src\think\cache\driver\File.php"
//  74 => "F:\thinkphpsource\vendor\topthink\framework\src\think\cache\Driver.php"
//  75 => "F:\thinkphpsource\vendor\topthink\framework\src\think\contract\CacheHandlerInterface.php"
//  76 => "F:\thinkphpsource\app\Request.php"
//  77 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Request.php"
//  78 => "F:\thinkphpsource\app\middleware.php"
//  79 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Pipeline.php"
//  80 => "F:\thinkphpsource\vendor\topthink\think-trace\src\TraceDebug.php"
//  81 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Route.php"
//  82 => "F:\thinkphpsource\vendor\topthink\framework\src\think\route\RuleName.php"
//  83 => "F:\thinkphpsource\vendor\topthink\framework\src\think\route\Domain.php"
//  84 => "F:\thinkphpsource\vendor\topthink\framework\src\think\route\RuleGroup.php"
//  85 => "F:\thinkphpsource\vendor\topthink\framework\src\think\route\Rule.php"
//  86 => "F:\thinkphpsource\route\app.php"
//  87 => "F:\thinkphpsource\vendor\topthink\framework\src\think\facade\Route.php"
//  88 => "F:\thinkphpsource\vendor\topthink\framework\src\think\route\RuleItem.php"
//  89 => "F:\thinkphpsource\vendor\topthink\framework\src\think\route\dispatch\Url.php"
//  90 => "F:\thinkphpsource\vendor\topthink\framework\src\think\route\dispatch\Controller.php"
//  91 => "F:\thinkphpsource\vendor\topthink\framework\src\think\route\Dispatch.php"
//  92 => "F:\thinkphpsource\app\controller\Index.php"
//  93 => "F:\thinkphpsource\app\BaseController.php"
//  94 => "F:\thinkphpsource\vendor\topthink\framework\src\think\facade\App.php"
//  95 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Response.php"
//  96 => "F:\thinkphpsource\vendor\topthink\framework\src\think\response\Html.php"
//  97 => "F:\thinkphpsource\vendor\topthink\framework\src\think\Cookie.php"
//  98 => "F:\thinkphpsource\vendor\topthink\think-trace\src\Html.php"
//  99 => "F:\thinkphpsource\vendor\topthink\framework\src\think\log\driver\File.php"
//  100 => "F:\thinkphpsource\vendor\topthink\framework\src\think\contract\LogHandlerInterface.php"
//  101 => "F:\thinkphpsource\vendor\topthink\framework\src\think\log\Channel.php"
//  102 => "F:\thinkphpsource\vendor\topthink\think-trace\src\tpl\page_trace.tpl"
//]

可以根据文件的加载情况大致熟悉一下流程

Released under the MIT License.