TP5编写小程序接口的不完备总结

面向对象编程
  • 面向对象的基本原则

高内聚,低耦合

  • 命名空间

关键字namespace定义命名空间
引入方式use关键字(use 也可用于函数,常量等),命名空间最前面可以省略反斜杠\

  • PSR-0规范

命名空间与目录结构要一致
类名采用大驼峰式的命名格式
一个php文件只有一个类

  • 类的定义

class关键字加类名(数字字母下划线组合,尽量做到语义化,看到类名就知道其作用),然后再跟双花括号

  • 类的分类

普通类,抽象类,接口,trait
全部是抽象方法的类是接口,可以理解为抽象到极致
trait的定义只是将class换成了trait

  • 抽象类

只要有一个抽象方法的类就是抽象类
abstract关键字定义抽象类和抽象方法,抽象方法没有方法体
不可被实例,只能被继承

  • 接口

interface关键字定义接口
方法全为public,没有方法体,抽象到极致成接口
implements关键字可以实现多个接口

  • trait

引入方式:在类的内部,引入多个的话用逗号分隔
trait中的方法有冲突的话,可以使用insteadas关键字解决冲突
trait其实也有优先级的概念,首选类内部定义的方法,然后是trait里面的方法,然后是基类的方法

  • 类的实例化(内外)

在外部使用new关键字+类名,如果该类存在构造函数则后面跟构造函数所需的参数列表
在内部实例化对象的话使用关键字self,parent

  • 类的自动载入

__autoload(快要被废弃),spl_autoload_register(推荐使用)
spl_autoload_register方法支持字符串函数名,数组的方式,callback的方式调用自动加载函数

  • 属于类的东西

const关键字定义的类常量
static关键字定义的静态属性和静态方法

  • 类的继承

php中的继承是单继承
extends关键字定义的类与类之间的关系

  • 对象的组成

属性和方法

  • 对象的特征

继承
封装
多态

  • 访问控制

public,protected,private

  • 重载与重写

重载是动态地创建类属性和方法,分为属性重载和方法重载,通过一些魔术方法来实现,比如__get,__set,__call,__callStatic
重写是子类继承父类的时候,对父类方法进行重构

  • 几个关键字

::class返回带命名空间的类名解析
static定义静态成员以及后期静态绑定,转发调用self,parent,static,__CLASS__
const定义类常量
final定义的类不能被继承,final定义的方法不能被重写

  • 对象的赋值

浅拷贝:变量之间地址传递,这样做有助于节约内存
深拷贝:变量之间按值传递
对象的赋值是一种浅拷贝,如果要深拷贝需要使用clone关键字

程序设计的原则
  • 单一职责原则
  • 开放封闭原则

对扩展开放,对修改封闭

  • 里式替换原则

继承

  • 最少知道原则

模块的独立

  • 接口隔离原则

接口粒度

  • 依赖倒置原则

面向抽象编程,面向接口编程

几种常见的设计模式
  • 单例模式
  • 简单工厂模式
  • 工厂模式
  • 抽象工厂模式
  • 注册树模式
  • 策略模式
  • 适配器模式
正则表达式

正则表达式是有原子和元字符组成的

  • 原子分类

普通字符(打印字符)
非打印字符
特殊字符或者元字符
通配字符
自定义字符

  • 元字符

元字符是用来修饰原子的

项目知识
  • TP5路由的三模式

PATHINFO模式
混合模式(官方推荐)
强制路由模式(推荐)

  • TP5路由的定义

普通定义,路由规则,路由地址,请求方式,路由参数,变量规则
批量定义,批量定义又分为静态批量定义和动态批量定义
获取的经验:路由匹配从上至下,一旦符合匹配就会路由到首次匹配的路由,可以添加路由变量规则;路由的路由地址是按模块/控制器/操作方法定义的,如果存在控制器分层的话,将分层部分用.连接;

  • RESTful最佳实践

REST是基于资源的,无状态的,统一接口,将客户端与服务器隔离等
http动词,post,get,put,delete
状态码:200,201,202,300,301,302,400,401,403,404,500
错误信息,有些错误信息需要客户端知道,有些不需要知道的可以统一错误信息
错误码,最好按模块分
token令牌授权和验证身份
版本控制
测试环境与生产环境分开
拥有一套API文档
url要语义化,望文知意

  • 参数校验

独立验证
验证器
AOP切面编程思想应用于参数验证

  • 异常处理

TP5的异常处理接管
在开发中可以将异常分为因为客户端操作产生的异常和后端服务器抛出的异常,由于客户端造成的,我们可以直接返回错误信息,不需要记录错误日志,但是由于后端代码原因造成的异常,这些异常一般客户端并不关心,我们可以统一错误信息,返回给前端,并且记录错误日志
AOP切面编程思想应用于异常处理

  • 日志记录

日志的开启与关闭
只记录关心的日志信息,无关紧要的日志信息,不用记录,既占用系统内存还不利于错误排查
自定义日志目录
日志级别:log,error,info,debug,notice,sql

  • 错误调试

变量调试,var_dump,dump,halt,echo与exit等
性能调试,debug函数或者Debug类调试占用内存和执行耗时
xdebug进行调试

  • 自定义配置文件

TP5框架加载配置顺序,惯例配置>应用配置>扩展配置>场景配置>模块配置>动态配置
推荐使用ENV模拟环境变量配置

  • 数据库与模型

TP5操作数据库的三种方式:原生方式,查询构造器,模型
DB数据库访问层是读写数据的,model层是处理复杂的业务逻辑,如果业务比较复杂,可以划分为model,service,logic层
打印SQL语句的几种方式,getLastSql(),select(false),fetchSql(),buildSql(),监听sql和sql日志记录
模型关联:一对一,一对多,多对多
模型关联预载入,with支持字符串格式和数组格式,数组格式的应用场景是模型的关联嵌套
针对模型采用静态调用还是实例调用取决于个人,但更推荐静态调用

总结

代码编程要考虑扩展性,重用性,以及易读性
要面向接口,面向抽象编程

你可能感兴趣的:(后端工程师之路,php从入门到放弃)