APPLET 小程序动态 我们的作品,他们的故事
Our work, their stories
微信小程序商城开发构建全栈应用
发布人:龙兵科技 18-07-04
1-1:
AOP编程思想 
看书和实际编码相辅相成。
1-2:
课程技术点:
ThinkPHP5框架,后面三个字母都是大写,  细节 :iOS 首字母小写,Android 首字母大写。
MySQL  
微信
小程序   腾讯官方出的小程序作对比

1-3:
课程流程:
服务端    
客户端   (客户使用的)
CMS•   (产品的管理员使用的)
cms的功能总结:1是基础数据的增删改查,2是特殊操作,比如发送微信消息

1-4:
三端分离概念:
以前的网站 CMS和后端是合起来的 ,当时因为移动端还没有兴起,
现在一般情况下cms也是客户端,不要视为服务端 ,各个端开发。结构清晰。

1-5:
实现通用的 结构良好的产品,
三端分离,
基于REST API,
全称:REST,全称是Resource Representational State Transfer,即:资源在网络中以某种形式进行状态转移。
基于token令牌管理权限,分级 (作用域),
一套架构适配iOS,Android,小程序与单页面,
使用ORM方式与数据库交互,
用面向对象的方式构建前端 (ES6 )

1-6:
知识与技术:
web框架核心知识:路由,控制器,模型
验证器,读取器,缓存,全局异常处理,
ORM:模型与关联模型

1-7:
微信技术点:微信小程序开放给个人。自己注册一个。
微信登录 
微信支付(预订单,支付与回调通知处理)
微信模板消息(不能主动向客户推送消息,要在特定情况下才能触发)

1-8:
数据表设计
数据冗余的合理利用
事务与锁在检测库存量中的应用

1-9:
学习要求:
静下心来,慢慢学习。
 

1-10:
前置知识:
php与面向对象相关知识
thinkphp 框架的基础知识
MYSQL数据库的基本使用
小程序常用API
有一个小程序账号

1-11:
泛化的web
web产品矩阵
公共服务(api)
要能写出易维护的代码,要让代码写的美~
 

前端绝不等于做界面和特效,也要处理业务逻辑。

1-12:
依赖或者包管理:composer  (新手尽量少用)
TP5已经为我们引入了很多插件,尽量少用到第三方,代码侵入,不利于编程逻辑的培养。

1-13:
产品代码会长期维护
知乎专栏:小楼昨夜又秋风

2-1:
环境,开发工具
ThinkPHP 5.07 
MySQL
PHP 5.6
Apache/nginx
使用XAMPP(集成安装包)
phpstrom
web开发者工具(VS Code 编写前端代码 更灵活)
Postman
Navicat

2-2:
安装软件

2-3:
安装tp5 :composer   、git   、官网下载  
应用项目
核心框架

2-4:
项目独立命名

2-5:
phpstrom快捷使用方式:
setting->keymap
alt +r   最近文件   可筛选
alt  +左右键 切换打开的文件
con+shifr+n  搜索所有文件名字
整段注释  con+shift+/
alt+e  代码块选中
新建文件   焦点放在左边项目栏  alt+insert
类中不同的方法快速移动   alt+上下箭头 

2-6:
tp5层次结构:
入口文件 
应用 包含模块
模块包含 mvc

2-7:
tp5自带web服务器
下方的命令行工具 Terminal
先切换进入public目录下
命令:php  -S  localhost:8080   router.php  即可(注意端口号不要与已有的web服务器冲突)
可以在这里操作git

2-8:
phpstrom断点调试 XDebug
安装xdebug
配置phpstrom 
了解短点调试的几个按钮的作用




2-9:
PATH_INFO   URL路径模式:http://servername/index.php/模块/控制器/方法/参数
url可配置是否区分大小写 
兼容模式:http://servername/index.php?s=模块/控制器/方法/参数
缺点:太长,会暴露服务器文件结构,不能很好支持url语义化
使用路由解决以上缺点。


3-1:
命名空间:自动在新建类的时候生成,setting->directories  将application定义别名app即可。

3-2:
配置虚拟域名,简化URL路径。
首先 配置虚拟主机,
配置虚拟主机的小技巧:使用apache,在虚拟主机配置文件中,先将localhost配置为一个虚拟主机,否则,当你配置一个虚拟主机的时候,访问localhost就是去访问你配置的那个虚拟主机的路径。
 

3-3:
安装postman:
将postman的收藏功能用起来,输入网址很麻烦。

3-4:
三种URL访问模式:path_info  ,  混合,强制。
路由:route.php文件中编写
配置式,
动态注册,think/route类 rule方法 一旦定义路由  原有的path_info失效。
配置中,可混合,可强制。

3-5:
定义路由:
Route:rule()方法的完整参数使用:(路由表达式,路由地址,请求类型,路由参数,变量规则)
请求类型 缺省 是 *,全部的请求类型。
有简化的写法:
Route:get(路由表达式,路由地址) ,方法有get,post,put,delete

3-6:
获取请求参数:
在路由定义里面/:id
在url里面,?name=xxx,
在post的body体里面,
Request类 实例化 instance,param()所有方法传过来的参数,get(),post()
当使用get()获取参数时,只能获取到?后面的参数,获取不到路由里面的参数,
就要使用到route()方法。
助手函数,input('param.')
依赖注入:在方法名中index(Request  $request) 在方法里面就可以用了。

3-7:
产品功能讲解与分析:
项目:零食商贩

3-8:
Vavicat安装以及数据库初步设计:
倾向于不用外键约束,

4-1:
Banner(轮播图)数据表设计分析:
有两张图 banner,banner_item

4-2:
Banner接口
方法:根据id获取banner
指明路由和方法,

4-3:
validate 独立验证
内置规则,可自定义验证过则。
new  Validate(规则)
->batch()
->check(数据)
->getError()
但是这种独立验证的封装性没有验证器好,以后大多数情况下都使用验证器。

4-4:
验证器
区别 对规则做了更好的封装
新建validate文件夹   类   属性 rules    使用:new  验证类

4-5:
项目结构体系详解:
客户端:cms   和小程序  登录就是获取令牌的过程  重点
小程序 和微信服务器  以及 我们自己的服务器交互
服务端;校验参数->controller  ->model/service/logic ->核心框架  异常处理 
注意:service  和  model层之间的关系    最好能灵活的同级 
小程序的缓存
restful api  

4-6:
自定义验证规则:
getBanenrByID  
参数 id正整数 
 自己写(发生错误,新建文件夹的时候,把顺序搞混了,导致接口访问不到!一定要注意)

4-7:
构建接口参数校验层:
上一节 的  也不够精简  复用性不高。
baseValidate基类。
goCheck   获取参数  做校验
拦截器    先使用tp5的默认异常 
自己写  没什么问题

5-1:
REST之前的重要协议:SOAP
soap 重   使用xml描述数据 前端调接口的时候   流程复杂  网站后台转发调用  

5-2:
restful  api 特点解析:
api基于rest理论设计
通常来说  json来描述数据   
无状态 ,每次请求不依赖其他接口
基于资源, 使用Http动词来操作资源
传统:区分使用get或者post 是根据参数简单与否来区分,现在:根据动作来区分
eg:删除操作使用delete ,新增操作使用post ,获取操作使用get,更新使用put.
接口名称的定义   尽量用名词而不是动词 。eg:movie/id  而不是:getMovie/id.

5-3:
RESTFul  API 最佳实践:
每次http请求都应该响应一个状态码,错误码(自定义 :有文档 ,可查找)和 统一描述错误
状态码:
404  资源没找到
400  参数错误
200  get查询资源成功
201  post创建资源成功
202  put更新成功了(有些设置为请求未响应)
401 无权限
403  禁止访问
500 服务器未知错误 。
统一错误描述信息:错误码,错误信息,当前url.
使用token令牌来授权和验证身份,
传统web用session和cookie,和token比较,token自己的服务器存储管理,灵活。
版本控制。
详细文档。

5-4:
如何学习RESTFul  API。
模仿:豆瓣开放api ,github开发者api
合理使用,切勿盲目照搬标砖REST,因为我们面向的是内部人员

6-1:
正确理解异常处理流程:
类同名的情况下别名,
异常层级关系  ->全局异常处理AOP  

6-2:
固有的处理异常的思维方式和流程:
现在有个服务器错误,假如1/0,抛出异常  状态码 400

6-3:
异常的分类:
两类:
由于用户行为导致的异常  ,比如参数输入错误 导致没有查询到数据 ,有的返回一个空数组,并不当成异常,有的 返回一个自定义的异常码。
不需要记录日志 ,
需要向用户返回具体的错误信息。
第二就是服务器自身异常,记录日志,不向客户返回具体原因。

6-4:
实现自定义全局异常处理:
新建exception文件夹,
覆盖和重写,
三个类
config    要配置

6-5:
实现已定义全局异常处理 下
render()方法要处理两种不同的异常,
新建文件记录错误码
测试两个异常!

6-6:
日志系统:
先关掉tp5的自动日志记录 ,太多,
有选择的记录日志,

6-7:
在全局异常处理中加入日志记录,
私有方法,记录日志,
手动初始化日志,然后记录日志

6-8:
全局异常处理应用 上:
对于客户端开发人员  json格式比较好,
对于服务端开发人员 网页格式比较好
需要一个开关,
还原父类的render()方法,
配置文件,助手函数
完善goCheck()抛出的异常 定义一个新的自定义异常

6-9:
全局异常处理的应用 中:
构造函数 对成员变量操作 可选参数赋值  异常类

6-10:
全局异常处理的应用 下:
验证器 需要验证多个参数的时候
batch()方法

6-11:
小结与AOP思想:面向切面

我有话说
联系我们
扫二微码