设计模式之适配器模式  

适配器模式是将一个类的接口转换成客户目标所需要的接口使得原本不兼容的可以一起工作。像笔记本电源的适配器一样,为了调整电压能够让电脑使用。 每个框架里面对于数据库的操作都有许多方式,PDO,Mysqli,Mysql。但是他们都有个共同的接口。这就是采用适配器模式的原理。你不可能去改变底层让它适应所有的客户需求,只能通过适配器方式来实现。 申明共有接口: interface Db { public function insert(); public function find(); } 接口的不同实

Posted:2015-10-21  By vilay

设计模式之抽象工厂模式  

抽象工厂提供创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 下面是数据库访问程序,用抽象工厂来实现。 抽象工厂接口(应该包含所有产品的创建的抽象方法): 申明抽象工厂接口: interface AFactory { public function createUser(); public function createDepartment(); } 抽象工厂的具体实现工厂: class MysqlFactory implements AFactory { public functi

Posted:2015-10-20  By vilay

设计模式之观察者模式  

观察者模式定义了一种一对多的依赖关系,让多个观察者对象监听某一个主题对象,当主题对象状态发生改变的时候,会通知观察者对象,观察者自动更新自己。 主题对象抽象类(即通知者抽象类): abstract class Subject { private $observers = array (); public function addObserver(Observer $observer) { $this->observers[] = $observer; } public function d

Posted:2015-10-18  By vilay

Mysql全文搜索索引使用  

创建表的时候就指定搜索的列,会插入删除会自动更新索引,或者数据完成的时候去改动,不要在导入数据的时候修改。 建表语句: Create table vilay( id int unsigned auto_increment, title varchar(20), body text, primary key (id), FULLTEXT('body') ) 使用: //Match匹配搜索的列,Against指定搜索的表达式(内容) select body from vilay where MATC

Posted:2015-10-18  By vilay

设计模式之建造者模式  

建造者模式是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以产生不同的表示。 例如我们的玩具厂,一套相同的流程可以产生不同的玩具,都需要建模,塑造,包装等等。 首先定义一个产品类: class Product { protected $parts = array (); public function addPart($part) { array_push($this->parts,$part); } public function show() { foreach ($thi

Posted:2015-10-18  By vilay

设计模式之外观模式  

外观模式为子系统中的接口提供一个一致的界面,此模式定义了一个高层接口,这接口是得子系统更容易调用。 子系统类: class SubSystemA { public function methodA() { echo 'My is A'.'<br>'; } } class SubSystemB { public function methodB() { echo 'My is B'.'<br>'; } } class SubSystemC { public function

Posted:2015-10-18  By vilay

设计模式之模板方法模式  

模板方法模式定义一个操作中的算法骨架,将一些步骤延迟到子类中。使子类可以不改变算法结构的情况下即可重定义算法的某些特定步骤。 模板方法模式主要是提供一个代码复用的平台。把不变的东西提取到超类中,以去除子类重复的代码。 模板方法实现: abstract class AbstractClass { public abstract function Operator1(); public abstract function Operator2(); public function templateMe

Posted:2015-10-17  By vilay

设计模式之原型模式  

原型模式用原型实例指定创建对象的种类,并且通过拷贝这些原型创建对象。 一般在初始化的信息不发生变化的时候,克隆是最好的方法,隐藏的对象创建的细节,同时又能够提升性能。如果初始化类的时候时间比较长,New 多个类很占时间,使用原型模式可以节省开销。 原型模式实现: class Prototype { private $name = ''; private $age = 0; private $sex = ''; private $experience = ''; //存储工作经历对象 privat

Posted:2015-10-17  By vilay

设计模式之工厂方法模式  

工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪个类,工厂方法使一个类的实例化延迟到其子类。 简单工厂模式与工厂方法模式的优缺点: 简单工厂模式的最大优点在于工厂类包含了必要的逻辑判断,根据客户端提供的参数选择实例化的类,减少了客户端对于具体类的依赖。缺点是每添加个功能都需要去修改工厂类,这样不符合面向对象设计的开放-封闭原则。参考简单工厂 工厂方法模式继承了简单工厂模式的优点,克服了他的缺点,它本身的缺点是每多加一个产品,需要增加一个产品工厂类,增加了额外的开发量。 下面介绍下工厂方

Posted:2015-10-17  By vilay

设计模式之装饰模式  

装饰模式就是动态的给一个对象添加一些额外的职责。 实例: 申明一个抽象类: <?php abstract class Component { public abstract function operation(); } 申明一个对象类,可以给Component类添加职责: <?php class ConcreateComponent extends Component { public function operation() { echo '对象的职责'; } } 申明一个装饰器

Posted:2015-10-16  By vilay

设计模式之代理模式  

代理模式为其它对象提供一种代理以控制这个对象的访问。 场景实例:追求者(真实实体)追MM,但是害羞不敢追,叫朋友(代理)代为送礼物 首先定义个共有接口: interface GiveGift { function giveFlowers(); function giveFoods(); } 真实实体实现接口: class Pursuit implements GiveGift { protected $mm = null; public function __construct(Girl $mm

Posted:2015-10-16  By vilay

Centos 下svn服务器的搭建与使用  

作为码农,我们在团队合作的工作中比较重要的一个技能就是版本控制器的使用,在面试过程中面试官也会问你有没使用过版本控制器。版本控制器中使用率比较大的就是SVN跟git了。我介绍下在centos下svn服务器的搭建与使用。 首先安装svn服务器 yum install subversion 创建svn目录 mkdir -p /home/svn 修改svn目录权限 cd /home/ chmod 777 -R svn 创建版本仓库 svnadmin create /home/svn/test 修改sv

Posted:2015-10-13  By vilay

设计模式之策略模式  

策略模式:定义了算法家族,将不同的算法封装具有共同接口的不同的类中,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户 应用场景:超市经常根据节日举办各种活动,做打折活动,或者满多少减多少,赠送积分等,都是一系列的算法可以用策略模式实现,减少代码的维护成本。还有电商网站中根据用户的特性,而展现不同的商品等等场景。 首先定义共同接口: interface Strategy { public function algorithmInterface(); } 定义不同的实现: //算

Posted:2015-10-12  By vilay

Linux 下Nginx虚拟主机配置  

现在很多人都有用到二级域名,我介绍下Linux下lnmp(Linux+nginx+mysql+php)虚拟主机的配置: 1.首先,在你购买域名的地方,解析二级域名,比如万网: 原域名:www.test.com 二级域名1:mtest.test.com 二级域名2:ztest.test.com (如果是本地测试,请修改host文件,Linux:/etc/hosts;) 2.配置虚拟主机: 网站根目录:/var/www 站点www.test.com 目录 /var/www/test 站点mtest.

Posted:2015-10-11  By vilay

设计模式之简单工厂模式  

假如我们需要实现一个计算器功能,最原始简单的方法就是写一个简单的类 如下: <?php class Operator{ public function getResult($numberA,$numberB,$operator) { if ($operator == '+') { $result = $numberA + $numberB; } elseif ($operaor == '-') { $result = $numberA-$numberB; } elseif ($operat

Posted:2015-10-08  By vilay