码迷,mamicode.com
首页 > 其他好文 > 详细

tp5执行流程

时间:2017-11-02 13:15:36      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:out   语言   ica   引导   服务器   ons   直接   get   简单   

目录结构

使用composer在安装TP5后的目录结构如下

tp5/                      ;根目录

/application              ;应用目录 
    /index                ;应用index模块目录 
    command.php           ;命令行命令配置目录
    config.php            ;应用配置文件
    databse.php           ;应用数据库配置文件
    route.php             ;应用路由配置文件

/public                   ;入口目录
    /static               ;静态资源目录
    .htacess              ;apache服务器配置
    index.php             ;默认入口文件
    robots.txt            ;爬虫协议文件
    router.php            ;php命令行服务器入口文件

/extend                   ;框架扩展目录

/thinkphp                 ;框架核心目录 
    /lang                 ;框架语言目录
    /library              ;框架核心目录
    /tpl                  ;框架模板目录
    base.php              ;全局常量文件
    convention.php        ;全局配置文件
    helper.php            ;辅助函数文件
    start.php             ;框架引导入口
    console               ;控制台入口文件

/vendor                   ;composer安装目录  
build.php                 ;默认自动生成配置文件
composer.json             ;composer安装配置文件
think.php                 ;命令行入口文件

入口文件及加载流程

如上面的目录结构,将服务器入口放在/public文件夹中,此时访问localhost则自动访问/public/index.php入口文件。ThinkPHP框架默认是单入口框架,所有请求全部经过入口文件index.php来进行访问

可以把index.php文件理解成整个TP框架的启动文件,PHP通过加载这个文件将整个框架所需要的PHP文件全部加载到内存中以供后续的调用。

来看看index.php文件的内容

// [ 应用入口文件 ]
// 定义应用目录
define(‘APP_PATH‘, __DIR__ . ‘/../application/‘);
// 加载框架引导文件
require __DIR__ . ‘/../thinkphp/start.php‘;

如果不去管APP_PATH常量的定义,那么index.php入口文件只做了一件事,那就是加载了另一个文件start.php

当然,index.php文件中还能做一些其他的事情,比如定义别的常量,不过这里不用去管那么多。

接下来去找start.php文件,在/tp5/thinkphp/文件夹里,打开

namespace think;

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

这个文件做了三件事

  1. 定义了整个框架的命名空间think
  2. 加载了文件base.php
  3. 执行了App类的run()方法,然后利用返回的Response对象执行了send()方法

第二步加载base.php文件,这个文件主要完成了常量定义、注册自动加载、注册错误和异常处理机制、加载惯例配置文件(convention.php)这些步骤。
注册自动加载和错误异常处理机制这两部可以简单的理解成完成这两步后所有框架写好的类文件里的类都可以直接在代码中调用了,就比如上面调用了App类的静态方法run()。

第三步执行的run()方法可以在/tp5/thinkphp/library/think/App.php文件中找到对应方法,这个方法是整个框架的核心方法,实现了路由转换、获取调度信息、根据调度信息执行相应模块控制器的方法、获取方法返回数据、将返回数据赋值给Response对象等一系列操作。最后,调用返回的Response对象的send()方法将信息返回给客户端,一次完整的http请求完成。

来源   http://www.jianshu.com/p/cd5cee8168f7

tp5执行流程

标签:out   语言   ica   引导   服务器   ons   直接   get   简单   

原文地址:http://www.cnblogs.com/mengor/p/7771528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!