学习tp5开发小程序商城笔记

一、下载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可以把无用的命名空间清除

 

 

 

 

        

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值