thinkphp5学习
目录 命名都是小写字母 或者 小写字母+下划线 eg: user/user_type
类文件(驼峰法) 命名空间与文件真实路径完全一致 app\index\controller
类名与文件名保持一致(首字母大写) User.php中只有User类
其他文件 匈牙利命名法 小写字母/小写字母+下划线 eg: list.php/list_user.php
函数 匈牙利命名法(小写字母+下划线) eg:get_user_type()
类的方法 驼峰法(首字母小写) eg:getName()
类的属性 驼峰法(首字母小写) eg:userType
魔术方法 双下划线开头+驼峰命名法 eg:__set()
常量 匈牙利命名法 大写字母+下划线 eg:APP_PATH
配置参数 匈牙利命名法 小写字母+下划线 eg:url_route_on
数据表 匈牙利命名法 小写字母+下划线 eg:tp5_staff
字段表 匈牙利命名法 小写字母+下划线,前缀用表名 eg:staff_name
模型
1.模型通常对应整个应用,因此模型通常在应用(application)目录下创建
2.模型返回的数据,通常是数组 或 字符串
3.模型支持分层操作,例如将模型层分为逻辑层/服务层/事件层。
视图
1.模板目录可以动态设置
TP5的生命周期
入口文件 -> 引导文件 -> 注册自动加载 -> 注册错误和异常机制 -> 应用初始化 ->
url访问检测 -> 路由检测 -> 分发请求 -> 响应输出 -> 应用结束
一、入口文件
1.任务:定义常量,加载引导文件,不要放任何业务处理代码
二、引导文件
1.thinkphp/start.php
2.执行: 加载常量 -> 加载环境变量 -> 注册自动加载 -> 注册错误与异常 -> 加载惯例配置 -> 执行应用
3.base.php 定义了大量的变量
三、注册自动加载
1.类方法: Loader::register();
2.作用:将所有符合规范的类库(包括Composer依赖加载的第三方类库)自动加载;
3.执行流程:
注册自动加载方法:\think\Loader::autoload -> 注册系统命名空间 -> 加载类库映射文件 ->
注册Composer自动加载 -> 注册extend扩展目录
四、注册错误和异常机制
执行Error::register()注册错误和异常处理机制
有三部分组成
1.应用关闭方法:think\Error::appShutdown
2.错误处理方法:think\Error::appError
3.异常处理方法:think\Error::appException
五、应用初始化
严格意义上,前面的内容都可算做应用初始化部分:
加载公共配置 -> 加载公共扩展配置 -> 加载应用状态配置 -> 加载别名定义 -> 加载行为定义 ->
加载公共函数文件 -> 注册应用命名空间 -> 加载扩展函数文件 -> 设置默认时区 -> 加载系统语言包
六、URL访问检测
URL必须是PATH_INFO格式才允许继续运行
PATH_INFO兼容格式
七、路由检测
1.如果开启了url_route_on参数,则首先进行URL路由检测
2.一旦检测到匹配的路由,根据路由规则会注册到响应的URL调度
3.TP5支持的路由规则:
路由到模块/控制器/操作 这是默认路由模式,如果关闭路由或路由检测无效则执行该模式
路由到外部重定向地址
路由到控制器方法
路由到闭包函数
路由到类的方法
八、分发请求
1.将用户请求分发到对应的路由地址,完成应用的业务逻辑并返回数据
2.统一使用return返回数据,不要用echo直接输出
3.如非必要,请不要使用exit或者die中断执行
4.分发请求支持TP5的五种路由地址模式
九、响应输出
1.控制器正常返回的数据通常是:字符串或数组格式
2.统一使用return返回数据,而不是直接输出,这样可以自动调用Response::send()方法
将最终的返回数据输出到页面或客户端,并自动转换成default_return_type参数配置的格式(XML,JSON等)。
十、应用结束
1.响应输出完成后,应用生命周期基本结束,可以写日志报告
2.日志包括两部分:用户调试输出和系统自动生成
3.日志在应用结束后,自动写入。