摘要: self 指的是解析上下文,而不是调用上下文。例子里,self被解析为定义get_self()的A,而不是解析为调用self的B。 php5.3中引入了延迟静态绑定的概念,该特性最明显的标志就是新关键字static。static指的是被调用的类。例子里B::get_static()将生产新的B,而不 阅读全文
posted @ 2016-03-24 12:31 tianxintian22 阅读(232) 评论(0) 推荐(1) 编辑
摘要: 迭代器模式,在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素。相比于传统的编程模式,迭代器模式可以隐藏遍历元素所需要的操作。 AllHacl.php index.php Hacl类相关内容参考数据对象映射模式。http://www.cnblogs.com/tianxintian22/p/52 阅读全文
posted @ 2016-03-21 15:59 tianxintian22 阅读(248) 评论(0) 推荐(1) 编辑
摘要: 面向对象编程的基本原则: 1、设置类的属性 用以上方法设置属性值会有很多问题: 第一:PHP允许动态设置属性,如果拼错或忘记属性名时并不会得到警告。例如错误地把 写作 ,当我们输出作者名字的时候,会有意想不到的结果。 第二:类太过松散,我们没有强制设置标题、价格或者产品名称,客户端代码可以确定的是这 阅读全文
posted @ 2016-03-14 16:18 tianxintian22 阅读(506) 评论(0) 推荐(2) 编辑
摘要: 装饰器模式,可以动态地添加修改类的功能。 一个类提供了一项功能,如果要修改并添加额外的功能,传统的编程模式需要写一个子类继承它,并重新实现类的方法。使用装饰器模式,仅需要在运行时添加一个装饰器对象即可实现,可以实现最大的灵活性。 DrawDecorator.php <?php namespace B 阅读全文
posted @ 2016-03-04 12:29 tianxintian22 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 原型模式与工程模式作用类似,都是用来创建对象。 与工程模式的实现不同,原型模式是先创建好一个原型对象,然后通过clone原型对象来创建新的对象。这样就免去了类创建时重复的初始化操作。 原型模式适用于大对象的创建。创建一个大对象需要很大的开销,如果每次new就会消耗很大,原型模式仅需内存拷贝即可。 i 阅读全文
posted @ 2016-03-03 16:21 tianxintian22 阅读(352) 评论(0) 推荐(1) 编辑
摘要: 观察者模式的核心是把客户元素(观察者)从一个中心类(主体)中分离开来。当主体知道事件发生时,观察者需要被通知到。同时,我们并不希望将主体与观察者之间的关系进行硬编码。为了达到这个目的,我们可以允许观察者在主体上进行注册。 观察者模式实现了低耦合、非侵入式的通知与更新机制。 场景:当一个事件发生后,要 阅读全文
posted @ 2016-03-03 14:49 tianxintian22 阅读(287) 评论(0) 推荐(1) 编辑
摘要: 数据对象映射模式,是将对象和数据存储映射起来,对一个对象的操作会映射为对数据存储的操作。 在代码中实现数据对象映射模式,实现一个ORM类,将复杂的sql语句映射成对象属性的操作。对象关系映射(Object Relational Mapping,ORM) ha_cl表 Hacl.php Factory 阅读全文
posted @ 2016-03-02 15:40 tianxintian22 阅读(883) 评论(0) 推荐(1) 编辑
摘要: 策略模式: 将一组特定的行为和算法封装成类,以适应某些特定的上下文环境; 实际应用举例,假如一个电商网站系统,针对男性女性用户要各自跳转到不同的商品类目,并且所有广告位展示不同的广告。 UserStrategy.php <?php namespace Baobab; interface UserSt 阅读全文
posted @ 2016-03-01 16:25 tianxintian22 阅读(397) 评论(1) 推荐(1) 编辑
摘要: 适配器模式,可以将截然不同的函数接口封装成统一的API; 应用举例,PHP的数据库操作有Mysql、Mysqli、pdo三种,可以用适配器模式统一成一致,类似的场景还有cache适配器,将memcache、redis,file,apc等不同的缓存函数统一成一致。 IDatabase.php <?ph 阅读全文
posted @ 2016-02-29 15:55 tianxintian22 阅读(256) 评论(0) 推荐(1) 编辑
摘要: Source Code Pro字体 easyphp 命名空间:隔离类和函数,php5.3以后 //test5.php<?php namespace Test5;//命名空间必须是程序脚本的第一条语句,除了declare function test(){ echo __FILE__; } //test 阅读全文
posted @ 2016-02-29 10:59 tianxintian22 阅读(623) 评论(1) 推荐(0) 编辑