赞
踩
一、下载ThinkPHP5.07,放网站根目录下,http://127.0.0.1/zerg/public/访问,出现如下
ThinkPHP V5
就是安装成功。
二、MVC
model 业务层
controller 控制层
view 视图层
三、ThinkPHP 5 结构与路径解析、路由
http://127.0.0.1/zerg/public/index.php/模块名/控制器/方法
http://127.0.0.1/zerg/public/index.php/sample/test/hello
http://z.cn/index.php/sample/test/hello 配置完虚拟域名后的路径,phpstudy8.1版本,可以一键配置。
路由
在application文件夹下的route.php里编写以下代码。
use think\Route;
Route::rule('hello', 'sample/Test/hello');
http://z.cn/hello访问,但是报错:No input file specified,解决方法看下面:
TP5配置路由时出现No input file specified
1.我们只需打开public/.htaccess文件;
2.将最后一行的代码改成这样: RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
即在index.php的后面加上?即可。
(视频里3-6,获取请求)
Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)')
5种请求类型 GET,POST,DELETE,PUT,* 默认*请求类型
['https'=>false] 手册-路由-路由参数
//Route::rule('hello','sample/Test/hello','GET',['https'=>false]);//调用rute方法
//Route::rule('hello','sample/Test/hello','GET|POST',['https'=>true]);//支持GET和POST 只支持https
//Route::get('hello/:id','sample/Test/hello');//get路由传递参数 http://127.0.0.1/zerg/public/index.php/hello/33?name=aa
方法里如下这样写
访问http://z.cn/hello/123?name=zhangsan,会输出123|zhangsan
//Route::post('hello/:id','sample/Test/hello');//post路由传递参数 http://127.0.0.1/zerg/public/index.php/hello/33?name=aa
//Route::get('hello','sample/Test/hello');
//Route::post();
//Route::any()
还可以request类获取,use think\Request;
还可以input助手函数 $all = input('get.age'); public function hello(Request $request)依赖注入等等
第四章、构建验证层
4-1 Banner数据表设计分析
4-2 Banner接口定义及自定义控制器多级目录
4-3 Validate独立验证 use think\Validate;
4-4 Validate验证器 封装性更好
4-5 零食商贩结构体系详解。简单业务放Model,相对复杂的放Service
4-6 自定义验证规则
4-7 构建接口参数校验层
第五章、REST与RESTFul
5-1
REST 轻 表述性状态转移,一种风格、约束、设计理念。
SOAP 重 通常来说,使用XML描述数据
5-2 RESTFul API的特点解析
RESTFul API基于REST的API设计理论,轻,通常来说,使用JSON描述数据,无状态
基于资源,增删改查都只是对资源状态的改变 使用HTTP动词来操作资源
5-3 RESTFul API的最佳实践
@HTTP动词(幂等性、资源安全性)
POST:创建 PUT:更新 GET:查询 DELETE:删除
状态码:404、400、200、201、202、401、403、500
错误码:自定义的错误ID号
统一描述错误:错误码、错误信息、当前URL
使用Token令牌来授权和验证身份 版本控制 测试与生产环境分开:api.xxx.com dev.api.xxx.com
URl语义要明确,最好可以“望文知意”,最好是有一份比较标准的文档
5-4 如何学习RESTFul API设计
学习RESTFul API的最佳方式
模仿 豆瓣开放API GitHub 开发者API(对RESTFul API的理解比较深)
第六章 AOP与全局异常处理
6-1 正确理解异常处理流程
6-2 固有的处理异常的思维模式与流程
6-3 理清思路,总结异常的分类
用户行为导致的异常(没有通过验证器,没有查询到结果) 通常不需要记录日志 需要向用户返回具体信息
服务器自身异常(代码错误,调用外部接口错误) 通常记录日志 不向客户端返回具体原因
6-4 实现自定义全局异常处理 上
全局异常处理
config.php配置为'exception_handle' => 'app\lib\exception\ExceptionHandler',
6-5 实现自定义全局异常处理 下
6-6 ThinkPHP5中的日志系统
config.php里重新定义日志目录:define('LOG_PATH', __DIR__ . '/../log/');
6-7 在全局异常处理中加入日志记录
关闭tp5默认记录日志------>>>config文件找到,'log', 'type' => 'File', 改为 'type' => 'test', 但通常不这样做
6-8 全局异常处理的应用 上
6-9 全局异常处理的应用 中
6-10 全局异常处理的应用 下
6-11 本章小结与AOP思想
AOP思想:就像看电影只有一个检票口,不管你票哪里买的,都要通过这个检票口。一个入口,避免开很多检票口
第七章 数据库访问与ORM
7-1 数据库操作三种方式之原生
$result = Db::query(
'select * from banner_item where img_id=?',[3]);
7-2 从一个错误了解Exception的继承关系
//\Exception使用基类exception
public function render(\Exception $e){ }
7-3 TP5数据库中间层架构解析
7-4 查询构造器一
//这些链式方法返回的都是query对象,加上find,select...等,才会生成sql语句。手册里-->链式操作
//find只返回一条记录; select返回二维数组,返回所有记录; 还有update delete insert。
$result = Db::table('banner_item')->where('banner_id', '=', $id)->select();
7-5 查询构造器二
7-6 查询构造器三
//表达式,数组法,闭包方法
$result = Db::table('banner_item')
//->fetchSql() //加上这个是返回sql语句
->where(function ($query) use ($id){
$query->where('banner_id', '=', $id);
})
->select();
7-7 开启SQL日志记录
在index.php下,开启SQL日志记录
//初始化sql错误日志
\think\Log::init([
// 日志记录方式,内置 file socket 支持扩展
'type' => 'File',
// 日志保存目录
'path' => LOG_PATH,
// 日志记录级别
'level' => ['sql']
]);
7-8 ORM(对象关系映射)与模型
7-9 初识模型
$banner = BannerModel::get($id); //get是模型的方法,返回的是对象
$banner = BannerModel::getBannerByID($id); //Db 返回的是数组 return的时候要,return json($banner);
7-10 模型定义总结
模型的类名和数据库表名是一致的,查询时会自动找到表名,不需要特别设置。
也可以自己设置表名:protected $table = '表名';
7-11 静态调用还是实例对象调用
7-12 几种查询动词的总结与ORM性能问题的探讨
模型特有的查询get、all,也可以使用find和select Db特有的查询find、select,无法用get、all
第八章 专题、分类、商品详情接口编写
8-1 Banner相关表分析(数据表关系分析)
表之间,分清一对多,多对多,一对一
8-2 模型关联----定于关联与查询关联
其他:
快捷键 phostorm下ctrl+alt+o可以把无用的命名空间清除
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。