PHP
辛丙亮
开拓视野,冲破艰险,看见世界,身临其境,贴近彼此,感受生活
展开
-
11.php建造者模式
面对批量的属性赋值创建对象适合使用建造者模式。<?php/* * 被创建的类 * */class CD { protected $_type = ""; protected $_size = ""; protected $_color = ""; public function setType($type){ $this->_typ原创 2016-01-20 16:48:14 · 293 阅读 · 0 评论 -
4.php单例模式
单例模式是我们经常会使用的设计模式,常用来针对重复创建对象的情况下,由于在整个运行环境中仅仅存在一份,有时候我们也把他用来像常量一样来保存数据。这里说一句,我们在使用JSON对象来保存数据这就相当于变量来保存数据,我们使用单例来保存数据就会类似于结构化的常量。 单例模式我们仅仅只需要创建一个类,我尽量在类中间做好注释。<?phpclass Sigon{ //用来保存自己这个原创 2016-01-12 15:29:46 · 223 阅读 · 0 评论 -
5.php观察者模式
有些开发人员说:“WEB开发是所有开发类型中最难最复杂的。”说这句话的原因就是因为我们会面对各种不确定的因素,用户输入、平台、屏幕大小等等等等。。。。有这样一种情况,我们的产品能让用户选择不同的背景颜色,我们对各种颜色的背景经过数据分析后发现文字颜色,文字字体,文字大小都要变化才能达到最佳的效果,这些样式因数分别在不同的对象中,我们怎么让这些因数随同背景颜色变化。观察者模式就是用来在一个因素变化后原创 2016-01-12 16:09:34 · 243 阅读 · 0 评论 -
7.php策略模式
策略模式就是自己并不对相应的事务做处理而是转交给更具体的对象去做,策略模式有很多变种,这里我们介绍两种。原创 2016-01-12 17:35:20 · 374 阅读 · 0 评论 -
8.php装饰器模式
装饰器模式的关键在于将数据进行传递,做处理以后再返回,返回的数据可以保存在最后一个对象的内部,也可以一直放在最开始的对象中。当然保存在一个位置,管理起来更为方便。 我们创建一个对象,通过对象中的方法中的我们向对象数组中添加数据,最后可以通过内部方法格式输出数据。<?phpclass CD{ public $data; function __constr原创 2016-01-12 21:59:29 · 240 阅读 · 0 评论 -
23.php使用注册表
全局变量是能被任意位置修改的,同时常量又不够灵活。我们通常借用单例模式创建单例来保存数据这就是注册表。注册表即可以保存对象也能保存键值对。 保存对象<?phpfinal class Registry{ //保存自身 private static $instance=NULL; //保存请求 private $Request; priv原创 2016-02-22 21:24:39 · 574 阅读 · 0 评论 -
19.php延迟绑定,使用static创建对象
去年就在《深入PHP面向对象、模式与实践》中看到了这样的一种用法,今天才拿出来仔细分析。 如果我们懒得思考会这么写:<?phpabstract class DomainObject{ }class User extends DomainObject{ public static function create(){ return new Use原创 2016-02-19 18:01:27 · 592 阅读 · 0 评论 -
21.php命名空间
命名空间是对工程和类管理的一种替代解决方式,本质上是是语言设计缺陷大规避,目的是为了工程的方便管理和防止同名类的加载。 我们不使用命名空间,并引入另外一个文件,我创建了三个文件待用,main.php,lib1.php,lib2.php<?php/* * filename ./main.php * * *//* namespace main; */require_o原创 2016-02-20 12:08:44 · 251 阅读 · 0 评论 -
22.使用UML图做描述
通查使用斜体表示类名,当使用抽象类时,使用类名在下一行使用{abstract}做标记,当使用接口时在接口名上方使用>。原创 2016-02-22 20:45:50 · 435 阅读 · 0 评论 -
24.php中使用Iterator,ArrayAccess和Countable
迭代器往往被我们用来在数据库中读取大量的数据时方便数据的管理。<?phpclass Basket implements Iterator{ private $fruits = array('apple', 'banna', 'pear', 'orange', 'watermelon'); private $position = 0; //返回当前的元素原创 2016-02-28 20:14:04 · 798 阅读 · 0 评论 -
3.php工厂模式
工厂模式和简单工厂的区别在于对每一种对象的创建都拥有独特的客户端,这样做的结果是避免在增加新的类别的时候,会去修改客户端,工厂方法是直接创建新的客户端,客户端也是由接口实现而来的,这样不需要阅读所有接口,仅仅在阅读客户端接口后就能对相应的类别客户端进行操作。 有一部分和简单工厂是一样的,这里我就不再重新写了。<?php//创建数据库的父类interface DB{ p原创 2016-01-12 14:25:24 · 237 阅读 · 0 评论 -
2.php简单工厂模式
一系类工厂模式都是在约束和为创建不同的对象带来便利。简单工厂就是在你的"客户端"根据你所传递的类名创建对应的对象,并返回。 我们模拟多种数据库之间的切换工作,我本机并没有装多种数据库,我们模拟一下,体现一下思想就好。<?php//创建数据库的父类interface DB{ public function conn();}//mysql数据库的连接class Mys原创 2016-01-12 11:45:13 · 211 阅读 · 0 评论 -
1.php多态
设计模式是由建筑学中间抽象出来的思想形成的,基于面向对象的设计思想和大量工程实践而成型。设计模式在众多语言中都是相通的,但是有些语言因为本身实际思想的缺陷会有很多的设计模式,但在弱类型语言比如php和python我们经常使用的设计模式屈指可数。多态在设计模式中占有重要地位,今天来说一说。 首先我们创建一个父类接口,我们总是面向接口编程,我们只需要看接口就知道有哪些方法可用,而不需要去阅读原创 2016-01-12 11:00:32 · 256 阅读 · 0 评论 -
12.php外观模式
构建中间层次,当数据要进行转化保存为其他形式,使用静态方法并创建客户端统一调用。<?php/* * 对象中保存了自己的信息,但有不同的格式 * */class Book{ public $name; public $author; public $message = array(); function __construct($name, $author,原创 2016-01-20 19:05:51 · 209 阅读 · 0 评论 -
13.php解释器模式
当遇到不良言论的筛选,往往需要该设计模式。分为三部分,数据的提供源,数据的替换处理,调用的控制部分。<?php/* * 要被翻译数据的源 * */class User{ public $user; public $saymessage; function __construct($user){ $this->user = $user原创 2016-01-20 21:15:33 · 199 阅读 · 0 评论 -
9.php适配器模式
所谓适配器就是在数据格式不匹配的情况下,对数据格式进行调整用在不同的条件下。<?php/* * 仅仅将错误消息返回 * * */class ErrorObject{ public $errorMessage; function __construct($errorMessage){ $this->errorMessage = $erro原创 2016-01-20 15:02:20 · 179 阅读 · 0 评论 -
10.php桥接模式
当遇到多种不同的处理组合时,为防止对象的爆炸而使用的设计模式。由一个类别对象做最后的发送,而其他类别做各种数据的处理。<?phpabstract class Info{ //创建的对象用于保存发送对象 public $obj; function __construct(Type $obj){ $this->obj = $obj;原创 2016-01-20 16:07:15 · 233 阅读 · 0 评论 -
14.中介者模式
电商项目中我们可能遇到这样的问题:要对不同的商品修改价格,但是商品是有巨大的差别的,这个时候就适合使用中介者模式。<?phpclass Book{ private $name; private $obj=NULL; public $price; function __construct($name, $price, Intermediar $obj)原创 2016-01-21 22:42:51 · 235 阅读 · 0 评论 -
15.php原型模式
有时候对象要修改某些部分属性成为新的对象的组成部分,我们借用对原型的克隆创建新的对象。<?phpclass Fish{ protected $name; protected $age; protected $weight; protected $message="还是一条活鱼"; function __construct($name, $ag原创 2016-01-21 22:58:28 · 287 阅读 · 0 评论 -
16.php代理模式
对原对象进行继承并重写要被改变的模块,这就是代理模式。<?phpclass CD{ protected $name; protected $price; protected $num; function __construct($name, $price, $num){ $this->name = $name; $th原创 2016-01-22 09:52:21 · 223 阅读 · 0 评论 -
17.php模版模式
直接上代码。<?phpabstract class sale{ public $price = 0; public final function setprice(){ $this->price += $this->Tax(); $this->price -= $this->sale(); } //税务原创 2016-01-22 10:39:34 · 205 阅读 · 0 评论 -
18.php访问者模式
本文参看php 设计模式 之 访问者模式.<?php//定义元素接口abstract class User{ public function getPoint() { return rand(); //该数据应该由数据库中读取,这里就直接模拟某个值了 } //这里的accept方法用于把访问者引入,在这个方法里,($visitor)访问原创 2016-01-22 11:12:20 · 228 阅读 · 0 评论 -
php中ob_start()系列函数的使用
输出控制函数可以帮助我们自由的控制php脚本数据的输出,对echo()这类函数起作用,但对header()等函数无效。所以我们利用这一点可以在header()函数之前进行输出,实际上一开始仅仅是输出到缓冲去并没有真正的输出,所以和header()之前输出会报错的说法并不矛盾。下面我们来看例子 1.简单代码段 我创建了一个test.php <?phpob_star原创 2015-12-21 15:08:34 · 5583 阅读 · 0 评论 -
PHP-curl
curl步骤初始化cURL(curl_init())向服务器发送请求接受服务器数据(curl_exec())关闭cURL(curl_close())网页爬虫$curl = curl_init("http://www.runoob.com");$result = curl_exec($curl);echo $result;curl_close($curl)使用参数配置$curl =原创 2016-08-03 15:08:37 · 276 阅读 · 0 评论