anyuan2002.com - vwin网

查找: 您的方位主页 > 电脑频道 > 编程代码 > 阅览资讯:thinkphp5.0结构运用恳求生命周期详细介绍

thinkphp5.0结构运用恳求生命周期详细介绍

2017-08-24 11:59:04 来历:www.anyuan2002.com 【

thinkphp5.0结构运用恳求生命周期详细介绍

本文实例叙述了thinkPHP5.0结构运用恳求生命周期。共享给咱们供咱们参阅,详细如下:

本篇内容咱们对ThinkPHP5.0的运用恳求的生命周期做大致的介绍,以便于开发者了解整个履行流程。

1、进口文件

用户主张的恳求都会经过运用的进口文件,一般是 public/index.php文件。当然,你也能够更改或许添加新的进口文件。

一般进口文件的代码都比较简略,一个一般的进口文件代码如下:

// 运用进口文件
// 界说项目途径
define('APP_PATH', __DIR__ . '/../application/');
// 加载结构引导文件
require __DIR__ . '/../thinkphp/start.php';

一般进口文件已界说一些常量为主,支撑的常量请参阅后续的内容或许附录部分。

2、引导文件

接下来便是履行结构的引导文件,start.php文件便是体系默许的一个引导文件。在引导文件中,会顺次履行下面操作:

① 加载体系常量界说;
② 加载环境变量界说文件;
③ 注册主动加载机制;
④ 注册过错和反常处理机制;
⑤ 加载常规装备文件;
⑥ 履行运用;

假如在你的运用进口文件中更改了默许的引导文件,则上述履行流程或许会跟从发生变化。

3、注册主动加载

体系会调用Loader::register()办法注册主动加载,在这一步完结后,一切契合标准的类库(包含Composer依靠加载的第三方类库)都将主动加载。

体系的主动加载由两个部分组成:

① 注册体系的主动加载办法 \think\Loader::autoload
② 注册体系命名空间界说
③ 加载类库映射文件(假如存在)
④ 假如存在Composer装置,则注册Composer主动加载
⑤ 注册Extend扩展目录

一个类库的主动加载检测次序为:

① 是否界说类库映射;
② PSR-4主动加载检测;
③ PSR-0主动加载检测;

能够看到,界说类库映射的办法是最高效的。

4、注册过错和反常机制

履行Error::register()注册过错和反常处理机制。

由三部分组成:

① 运用封闭办法:think\Error::appShutdown
② 过错处理办法:think\Error::appError
③ 反常处理办法:think\Error::appException

注册运用封闭办法是为了便于阻拦一些体系过错。

在整个运用恳求的生命周期过程中,假如抛出了反常或许严重过错,均会导致运用提前完毕,并呼应输出反常和过错信息。

5、运用初始化

履行运用的第一步操作便是对运用进行初始化,包含:

加载运用(公共)装备;
加载运用状况装备;
加载别号界说;
加载行为界说;
加载公共(函数)文件;
加载扩展装备文件(由extra_config_list界说);
加载扩展函数文件(由extra_file_list界说);
设置默许时区;
加载体系语言包;

6、URL拜访检测

运用初始化完结后,就会进行URL的拜访检测,包含PATH_INFO检测和URL后缀检测。

5.0的URL拜访有必要是PATH_INFO办法(包含兼容办法)的URL地址,例如:

所以,假如你的环境只能支撑一般办法的URL参数拜访,那么有必要运用

假如是命令行下面拜访进口文件的话,则经过

$php index.php index/index/hello/val/value...

获取到正常的$_SERVER['PATH_INFO']参数后才干持续。

7、路由检测

假如敞开了url_route_on参数的话,会首先进行URL的路由检测。

假如一旦检测到匹配的路由,依据界说的路由地址会注册到相应的URL调度。

5.0的路由地址支撑如下办法:

路由到模块/控制器/操作;
路由到外部重定向地址;
路由到控制器办法;
路由到闭包函数;
路由到类的办法;

路由地址或许会受域名绑定的影响。

假如封闭路由或许路由检测无效则进行默许的模块/控制器/操作的剖析辨认。

假如在运用初始化的时分指定了运用调度办法,那么路由检测是可选的。

能够运用 \think\App::dispatch() 进行运用调度。

8、分发恳求

在完结了URL检测和路由检测之后,路由器会分发恳求到对应的路由地址,这也是运用恳求的生命周期中最重要的一个环节。

在这一过程中,完结运用的事务逻辑及数据回来。

主张一致运用return回来数据,而不是echo输出,如非必要,请不要履行exit中止。

直接echo输出的数据将无法进行主动转化呼应输出的便当。

下面是体系支撑的分发恳求机制,能够依据状况挑选:

模块/控制器/操作

这是默许的分发恳求机制,体系会依据URL或许路由地址来判别当时恳求的模块、控制器和操作名,并主动调用相应的拜访控制器类,履行操作对应的办法。

该机制下面,首先会判别当时模块,并进行模块的初始化操作(和运用的初始化操作相似),模块的装备参数会掩盖运用的没有收效的装备参数。

支撑模块映射、URL参数绑定到办法,以及操作绑定到类等一些功用。

控制器办法

和前一种办法相似,仅仅无需判别模块、控制器和操作,直接分发恳求到一个指定的控制器类的办法,因而没有进行模块的初始化操作。

外部重定向

能够直接分发恳求到一个外部的重定向地址,支撑指定重定向代码,默许为301重定向。

闭包函数

路由地址界说的时分能够直接选用闭包函数,完结一些相对简略的逻辑操作和输出。

类的办法

除了以上办法外,还支撑分发恳求到类的办法,包含:
静态办法:

'blog/:id'=>'\org\util\Blog::read'


类的办法:

'blog/:id'=>'\app\index\controller\Blog@read'

9、呼应输出

控制器的一切操作办法都是return回来而不是直接输出,体系会调用Response::send办法将终究的运用回来的数据输出到页面或许客户端,并主动转化成default_return_type参数装备的格局。所以,运用履行的数据输出只需要回来一个正常的PHP数据即可。

10、运用完毕

事实上,在运用的数据呼应输出之后,运用并没真实的完毕,体系会在运用输出或许中止后进行日志保存写入操作。

体系的日志包含用户调试输出的和体系主动生成的日志,一致会在运用完毕的时分进行写入操作。

而日志的写入操作受日志初始化的影响。

期望本文所述对咱们根据ThinkPHP结构的PHP程序设计有所协助。


本文地址:http://www.anyuan2002.com/bcdm/91510.html
Tags: 恳求 结构 thinkPHP5.0
修改:vwin网
188bet uedbet 威廉希尔 明升 bwin 明升88 bodog bwin 明升m88.com 18luck 188bet unibet unibet Ladbrokes Ladbrokes casino m88明升 明升 明升 m88.com 188bet m88 明陞 uedbet赫塔菲官网 365bet官网 m88 help
推行内容
引荐阅览
抢手引荐
引荐文章
关于咱们 | 联络咱们 | 友情链接 | 网站地图 | Sitemap | App | 回来顶部