PHP设计模式小记录
文章平均质量分 86
总结记录了一些PHP设计模式方面的一些内容,希望和大家共同进步。。。
luyaran
像永远快乐的阳光,追求那至高无上的完美乐园。
展开
-
面向对象的五大设计原则之单一职责原则
我们都知道,面向对象是一种高度抽象的思维,我们在面向对象设计中,类是最基本的单位,我们的各种设计都是围绕着类来进行的,可以这么说,类与类之间的关系,构成了设计模式的大部分内容,我么可能认为,类是属性+函数构成的,事实上在底层存储上确实也是这么来搞的,但是这些仅仅只是确定一个独立的类,而类与类之间的关系,才是设计模式所需要关心的内容,咱们对别的太多的东西也不废话,这篇文章只是来看下设计模式的五大原则...原创 2018-11-28 16:53:35 · 308 阅读 · 0 评论 -
php的一些理解(对象与类的概念以及相互关系理解)
先来看一段简单的代码:<?phpclass Person{ public $name; public $age; public $sex; public function who() { echo $this->name." is ".$this->age." years old and is my ".$th...原创 2018-11-05 15:22:44 · 1868 阅读 · 0 评论 -
PHP设计模式之SOLID原则了解下
设计模式中的SOLID原则,分别是单一原则、开闭原则、里氏替换原则、接口隔离原则、依赖倒置原则,遵循前辈们总结出来的五大原则可以使程序解决紧耦合,更加健壮。来看个表单:简拼 全拼 汉字 简单介绍 SRP The Single Responsibility Principle 单一责任原则 对象应该仅具有单一的功能 OCP The Open C...原创 2018-09-29 15:53:38 · 1139 阅读 · 0 评论 -
PHP设计模式之外观模式(Facade)了解下
这个外观模式,就是通过在必需的逻辑和方法的集合前创建简单的外观接口,并且还会隐藏了调用对象的复杂性,它和建造者模式非常相似,建造者模式一般是简化对象的调用的复杂性,但是外观模式一般是简化含有很多逻辑步骤和方法调用的复杂性。来看下实例,先来描述下:设计一个User类,里面有getUser获取用户信息接口 在使用getUser这个接口的时候,需要设置用户的用户名和用户年龄 所以在正常情况下...原创 2018-09-28 13:41:21 · 4431 阅读 · 1 评论 -
PHP设计模式之委托模式(Delegation)了解下
这个委托模式呢,就是通过分配或委托其他对象,它能够去除核心对象中的判决和复杂的功能性。来看一个经典的应用场景:设计了一个cd类,类中有mp3播放模式,和mp4播放模式 改进前,使用cd类的播放模式,需要在实例化的类中去判断选择什么方式的播放模式 改进后,播放模式当做一个参数传入playList函数中,就自动能找到对应需要播放的方法。来看下未改进之前的cd类,这时候选择播放模式是一种...原创 2018-09-28 14:26:31 · 729 阅读 · 0 评论 -
PHP设计模式之装饰器(者)模式(Decorator)了解下
通常情况下,我们如果要给对象添加功能,要么直接修改对象添加相应的功能,要么派生对应的子类来扩展,抑或是使用对象组合的方式。显然,直接修改对应的类这种方式并不可取。在面向对象的设计中,我们也应该尽量使用对象组合,而不是对象继承来扩展和复用功能。装饰器模式就是基于对象组合的方式,可以很灵活的给对象添加所需要的功能,并且它的本质就是动态组合,一句话,动态是手段,组合才是目的。也就是说,在这种模式...原创 2018-09-28 15:08:04 · 1086 阅读 · 0 评论 -
PHP设计模式之数据访问对象模式(DAO)了解下
这个数据访问对象模式主要就是描述了如何创建透明访问数据源的对象,这种设计模式对于同时学过PHP和MySQL的人来说,是一个全新的和令人兴奋的概念,并且这种设计模式的目的就是为了解决重复与数据源抽象化这两种特定的问题。我们可以先创建一个数据访问对象设计模式的对象,这个数据访问对象封装了创建sQL调用、减少实例创建的复杂性和重复以及更新进程的智能方式,并且,这个数据访问对象的使用者不会知道实际使用...原创 2018-09-28 15:33:33 · 1531 阅读 · 0 评论 -
PHP设计模式之建造者模式(Builder)了解下
这个建造者模式,我们也可以称为生成器模式,核心思想是将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式,简单点来说就是为了消除其它对象复杂的创建过程。例如:汽车,他的发动机引擎有好多品牌,轮胎也有各种材质,内饰更是千奇百怪;鸟,他的头、翅膀以及脚有各种颜色和形状,在创建这种复杂对象的时候,我们建议使用建造者模式。先来看一个案例来感受下什么...原创 2018-09-29 10:57:27 · 987 阅读 · 0 评论 -
PHP设计模式之适配器模式(Adapter)了解下
这个适配器模式,就是为了将一个类的接口转换成客户希望的另外一个接口,并且使用原本不兼容的而不能在一起工作的那些类可以在一起工作。它的核心思想就是把对某些相似的类的操作转化为一个统一的“接口”(这里是比喻的说话)--适配器,或者比喻为一个“界面”,统一或屏蔽了那些类的细节。适配器模式还构造了一种“机制”,使“适配”的类可以很容易的增减,而不用修改与适配器交互的代码,符合“减少代码间耦合”的设计原则。...原创 2018-09-29 13:47:14 · 240 阅读 · 0 评论 -
PHP常用的魔术常量记录下
PHP 向它运行的任何脚本提供了大量的预定义常量,不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。有八个魔术常量它们的值随着它们在代码中的位置改变而改变,我们接下来具体看下。首先是__LINE__,它表示文件中的当前行号,实例如下:<?phpecho '这是第 " ' . __LINE__ . ' " 行';...原创 2018-09-07 14:33:40 · 236 阅读 · 0 评论 -
PHP的命名空间(namespace)了解下不???
PHP 命名空间(namespace)是在PHP 5.3中加入的,它可以解决以下两类问题:用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。我们在默认情况下,所有常量、类和函数名都放在全局空间下,就和PHP支持命名空间之前一样,命名空间通过关键字names...原创 2018-09-07 16:08:58 · 341 阅读 · 0 评论 -
PHP的超级全局变量($GLOBALS&$_SERVER&$_REQUEST),咱们来聊聊
超级全局变量在PHP 4.1.0之后被启用, 是PHP系统中自带的变量,在一个脚本的全部作用域中都可用,超级全局变量具体如下:$GLOBALS $_SERVER $_REQUEST $_POST $_GET $_FILES $_ENV $_COOKIE $_SESSION 咱们这次就来聊聊$GLOBALS&$_SERVER&$_REQUEST这三个超级全局变量...原创 2018-09-11 09:28:17 · 1207 阅读 · 0 评论 -
PHP记录之面向对象(Object-oriented programming,OOP)了解下呗(一)
在面向对象的程序设计(英语:Object-oriented programming,缩写:OOP)中,对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象,然而在现实世界里我们所面对的事情都是对象,如计算机、电视机、自行车等,我们来看下对象的三个主要特征:对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为。 对象的形态:当施加那些方法是对象如何响应,颜色,尺寸,外型。...原创 2018-09-21 10:52:04 · 361 阅读 · 0 评论 -
PHP记录之面向对象(Object-oriented programming,OOP)了解下呗(二)
我们可以使用接口(interface),指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容,我们可以通过 interface 关键字来定义,就像定义一个标准的类一样,但其中定义所有的方法都是空的,但是其中定义的所有方法都必须是公有,这是接口的特性。但是我们如果要实现一个接口,就得使用 implements 操作符,并且类中必须实现接口中定义的所有方法,否则会报一个致命错误,其中类还可以...原创 2018-09-21 11:06:45 · 200 阅读 · 0 评论 -
PHP设计模式之策略模式(Strategy)了解下
这个策略模式,意思就是定义一系列算法,把它们一个个封装起来,并且使它们可相互替换,使用得算法的变化可独立于使用它的客户,简单来讲就是,策略模式设计帮助构建的对象不必自身包含逻辑,而是能够根据需要利用其他对象中的算法。来看下应用场景: 1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。 2、 需要在不同情况下使用不同...原创 2018-09-21 13:25:53 · 1389 阅读 · 0 评论 -
PHP设计模式之单例模式了解下
单例模式,是一种常用的软件设计模式,在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例,即一个类只有一个对象实例。通俗来讲就是通过提供自身共享实例的访问,单例设计模式用于限制特定对象只能被创建一次,来看下这个单例模式的要点:1.一个类只能有一个对象;2.必须是自行创建这个类的对象;3,要想整个系统提供这一个对象;从具体实现的角度来说,可以按着...原创 2018-09-21 13:59:27 · 377 阅读 · 0 评论 -
PHP设计模式之观察者模式了解下
“观察者模式”的观察者三个字信息量很大,玩过很多网络游戏的童鞋们应该知道,即便是斗地主,除了玩家,还有一个角色叫“观察者",在咱们本次文章中的观察者模式也是如此,就是我们会有要有一个“主题”,只有有了一个主题,观察者或者说各位看官才能搬着小板凳儿聚在一堆,来看我的文章。其次,观察者还必须要有自己的操作,也就是说,你不能光看我的文章啊,还得自己动手,否则你聚在一堆儿没事做也没什么意义,白看一篇文章,...原创 2018-09-21 15:01:03 · 299 阅读 · 0 评论 -
PHP设计模式之中介者模式(Mediator Pattern)了解下
咱们先来看下中介者模式(Mediator Pattern)的定义,它就是,用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,这种模式又称为调停者模式,它是一种对象行为型模式。我们先来看用户与用户直接聊天的设计方案。在这个方案设计的过程中,我们可以发挥想象,用户对象之间存在很强的关联性,将导致系统出现如下问题:系...原创 2018-09-21 15:47:32 · 329 阅读 · 0 评论 -
PHP设计模式之迭代器(Iterator)模式了解下
迭代器有时又称光标(cursor)是程式设计的软件设计模式,可在容器物件(container,例如list或vector)上遍访的接口,设计人员无需关心容器物件的内容,现在呢,各种语言实作Iterator的方式皆不尽同,有些面向对象语言像Java, C#, Python, Delphi都已将Iterator的特性内建语言当中,完美的跟语言整合,我们称之隐式迭代器(implicit iterator...原创 2018-09-27 15:39:53 · 3204 阅读 · 0 评论 -
PHP设计模式之解释器(Interpreter)模式了解下
解释器模式,它是什么呢?意思就是,给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子,这是最实在的一种说法。我们还可以理解为它是用于分析一个实体的关键元素,并且针对每个元素提供自己的解释或相应动作。解释器模式非常常用,比如PHP的模板引擎 就是非常常见的一种解释器模。咱来看一个网上找的最简单的实例:<?php//解释器模式 用于...原创 2018-09-27 16:13:32 · 542 阅读 · 0 评论 -
PHP设计模式之工厂模式(Factory)了解下
工厂模式的意思其实就是提供获取某个对象实例的一个接口,同时使调用代码避免确定实例化基类的步骤,实际上就是建立一个统一的类实例化的函数接口,完事统一调用,统一控制,它是PHP中常用的一种设计模式,一般会配合单例模式一起使用,来加载php类库中的类。来看一个简单的应用场景:我们拥有一个Json类,String类,Xml类。 如果我们不使用工厂方式实例化这些类,则需要每一个类都需要new一遍,过程...原创 2018-09-28 11:06:55 · 3777 阅读 · 0 评论