1)MVC概述:模型与视图,用控制强制分离,数据请求与展示由控制器统一调配。
2)URL访问默认采用PATH_INFO方式:
http://域名/入口文件/模块/控制器/操作/参数名/参数值
解析链接:
入口文件(应用入口,如index.php)
模块(应用单元,如user)
控制器(控制单元,如Index)
操作(执行单元,如add())
例子:http://tp5.com/index.php/index/user/list/id/10/name/krasen
3)模块(module)
1,一个应用下有多个模块,对应着应用不同部分,如前台,后台
2,每个模块都可以有完整的MVC类库,创建和管理这些类库是我们最主要的工作
3,每个模块可以有独立的配置文件(config.php)和公共函数文件(common.php)
4,如果应用简单,可使用单模块模式:'app_multi_module'=>false
4)控制器(controller)
这里注意的是tp5的控制器不需要继承任何基类就可以工作,但是模板渲染所引用的方法,必须继承Controller类才能调用否则找不到方法报错。
eg:
<?php
namespace aap\index\controller;
use think\Controller;
class Index extends Controller {
/**
* 测试方法
*/
public function index() {
return $this->fetch();
}
}
?>
5)TP5的生命周期:
入口文件 -> 引导文件 -> 注册自动加载 -> 注册错误和异常机制 -> 应用初始化
-> URL访问检测 -> 路由检测 -> 分发请求 -> 响应输出 -> 应用结束
1,入口文件:
文件名:index.php 位置:public/index.php
用户通过入口文件,发起服务请求,是整个应用的入口与起点
原则任务:定义常量,加载引导文件,不要放任何业务处理代码
*代码:
<?php
/**
* 应用入口文件
*/
//定义项目路径
define('APP_PATH', __DIR__ . '/../application/');
//加载框架引导文件
require __DIR__.'/../thinkphp/start.php';
?>
2.引导文件
文件名:start.php 位置:thinkphp/start.php
执行: 加载常量 -> 加载环境变量 -> 注册自动加载 -> 注册错误与异常 -> 加载惯例配置 -> 执行应用
*代码:
<?php
namespace think;
//ThinkPHP 引导文件
//加载基础文件
require __DIR__ . '/base.php';
//执行应用 App中的run()方法,该方法返回的是一个对象,然后执行该对象中的send()方法
App::run()->send();
?>
3.注册自动加载
类方法: Loader::register();
作用:将所有符合规范的类库(包括Composer依赖加载的第三方类库)自动加载
执行流程:
注册自动加载方法: \think\Loader::autoload -> 注册系统命名空间 ->
加载类库映射文件 -> 注册Composer自动加载 -> 注册extend扩展目录
4.注册错误和异常机制
执行Error::registert()注册错误和异常处理机制
三部分组成:
4_1,应用关闭方法: think\Error::appShutdown
4_2,错误处理方法: think\Error::appError
4_3,异常处理犯法: think\Error:::appException
5.应用初始化
加载公共配置 -> 加载公共扩展配置 -> 加载应用状态配置 ->加载别名定义 ->
加载行为定义 ->加载公共函数文件 ->注册应用命名空间 -> 加载扩展函数文件 ->
设置默认时区 -> 加载系统语言包
6.URL访问检测
URL必须是PATH_INFO格式才允许继续运行
标准格式:
http://域名/入口文件/模块名/控制器名/操作名/参数键值对
eg:http://tp5.com/index.php/index/user/add/id/10/namew/krasen
兼容格式:
http://域名/index.php?s=/模块名/控制器名/操作名&参数键值对
eg:http://tp5.com/index.php?s=index/user/add&id=10&name=krasen