大话PHP设计模式

php面向对象高级特性
  命名空间
  类自动载入
    spl_autoload_register();
  PSR-0规范
    命名空间与绝对路径一直
    类名首字母大写
    除入口文件外,其他".php"必须只有一个类
  SPL标准库
    stack
      new SplStack()
      push()
      pop()
    queue
      new SplQueue()
      enqueue()
      dequeue()
    heap
      new SplHeap()
      insert()
      extract()
    fixedArray 固定长度数组
      new fixedArray(10)
  php链式操作
  PHP魔术方法
    __get|__set 设置|调用不存在的属性
    __call|__callStatic 调用不存在的方法|静态方法
    __toString 转成字符串
    __invoke 对象当成函数去执行时调用invoke
11种php设计模式
  三种基本设计模式
    工厂模式
      工厂方法或者类生成对象,而不是在代码中直接new
    单例模式
      使某个类的对象仅创建一次
    注册树模式
      全局共享和交换对象
  适配器模式
    将不同的函数接口封装成统一的api
    cache适配器 mysql-mysql_i-PDO适配器
  策略模式
    将一组特定的行为和算法封装成类,以适应某些特定的上下文环境
    分支逻辑
  数据对象映射模式
    将对象和数据存储映射起来,对一个对象操作会映射出对数据存储的操作
  观察者模式
    当一个对象状态发生改变时,依赖它的对象全部会受到通知,并自动更新
    场景:
    一个事件发生后,要执行一连串的更新操作,传统的编程方式是在事件的代码之后直接加入处理逻辑,当更新的逻辑增多之后,代码会变得难以维护。这种方式是耦合的,侵入式的,增加新的逻辑需要修改时间主体的代码
    观察者模式实现了低耦合,非侵入式的通知和更新机制
  原型模式
    与工厂模型作用类似,用来创建对象
    与工厂模式的实现不同,原型模式是县创建好一个原型对象,然后通过clone原型对象来创建新的对象,免去类创建时重复的初始化操作
    原型模式适用于大对象的创建
    重点:clone
  装饰器模式
    可以动态的添加修改类的功能
    一个类提供了一项功能,如果要在修改并添加额外的功能,传统的编程模式需要写一个子类来继承,并重新实现类的方法
    使用装饰器模式,仅需要在运行时添加一个装饰器的对象即可实现,可以实现最大的灵活性
  迭代器模式
    在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素
    相比于传统的编程模式,迭代器模式可以隐藏遍历元素的所需操作
    继承Iterator接口:class AllUser implements \Iterator{}
  代理模式
    在客户端与实体之间建立一个代理对象(proxy),客户端对实体进行操作全部委派给代理对象,隐藏实体的具体实现细节部署到另外的服务器
    Proxy还可以与业务代码分离,业务代码中通过RPC来委派任务
面向对象编程基本原则
  单一职责:一个类,只需要做好一件事情
  开放封闭:一个类,应该是可扩展的,而不可修改的
  依赖倒置:一个类,不应该强依赖另外一个类,每个类对于另外一个类都是可替换的
  配置化:尽可能的使用配置,而不是硬编码
  面向接口编程:只需要关心接口,不需要关心实现
MVC结构
  模型
  视图
  控制器
配置与设计模式
  php中使用ArrayAccess实现配置文件的加载
  在工厂方法中读取配置,生成可配置化的对象
  使用装饰器模式实现权限验证,模板渲染,json串化
  使用观察者模式实现数据更新时间的一系列更新操作
  使用代理模式实现数据库的主从自动切换

posted @ 2018-11-13 15:51  井梅0709  阅读(151)  评论(0编辑  收藏  举报