摘要:抽象工厂模式(abstract factory): 意图: 【GoF】提供一个创建一系列相关或相互依赖的接口,而无需指定他们具体的类。 动机: 把创建者与产品实现分离。 适用: 一、一个系统要独立于它的产品的创建、组合与表示时。 二、一个系统要由多个产品系列中的一个来配置时。 三、当你要强调一系列相
阅读全文
摘要:代理模式(Proxy) <意图> 【GOF】为其他对象提供一种代理对象以控制对这个对象的访问。 代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象(被代理对象)的引用。代理就是一个人或一个机构代表另一个人或者一个机构采取行动。 (客户端引用的是代理对象)某些情况下,客户不想或者不能够直接
阅读全文
摘要:聚合(aggregation)意味着一个对象拥有另一个对象或对另一个对象负责。一般我们称一个对象包含另一个对象或者一个对象是另一个对象的一部分。聚合意味着聚合对象和其所有者具有相同的生命周期。一般用带菱形的箭头表示。指该类里(A)有其它类(B)的指针或引用,在该类里(A)会调用其他类(B)的方法或属
阅读全文
摘要:享元模式:FLYWEIGHT在拳击比赛中指最轻量级。享元模式以共享的方式高效的支持大量的细粒度对象。享元模式能做到共享的关键是区分内蕴 状态和外蕴状态。内蕴状态存储在享元内部,不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能影响内蕴状态,它们是相互独立的。 将可以共享的状态和
阅读全文
摘要:责任链模式: 在责任链模式中,很多对象由每一个对象对其下家的引用而接 起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个对象最终处理这个请求,系统可以在不影响客户端的情 况下动态的重新组织链和分配责任。处理者有两个选择:承担责任或者把责任推给下家。一个请
阅读全文
摘要:迭代子模式:迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集,聚集对象是能够包容一 组对象的容器对象。迭代子模式将迭代逻辑封装到一个独立的子对象中,从而与聚集本身隔开。迭代子模式简化了聚集的界面。每一个聚集对象都可以有一个或一个 以上的迭代子对象,
阅读全文
摘要:状态模式:状态模式允许一个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一样。状态模式把所研究的对象的行为包装在不 同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式需要对 每一个系统可能取得
阅读全文
摘要:1.1 变量赋值 变量的传值赋值与引用赋值的区别,变量都是存放在栈内存中的,传值赋值时重新分配内存,引用是指向共同的内存.使用“&”符号实现引用赋值。$a = 11;$b = $a;$b = 22;echo $a."";echo $b;$c = &$a;//引用赋值$c = 33;echo $a....
阅读全文
摘要:<意图> 【GOF】为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层次的接口,使得子系统更加容易使用。 外部与子系统的通信是通过一个门面(Facade)对象进行。 门面模式: 外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使
阅读全文
摘要:-1、什么是 Cookie? cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。 cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。PHP 在http 协议的头信息里发送cookie,因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对header()函数的限制类似。1.1 设置cookie: 可以用 setcookie()或 setrawcookie()函数来设置 cookie。也可以通过向客户端...
阅读全文
摘要:单例模式 意图: 【GoF】保证一个类仅有一个实例,并提供一个访问它的全局访问点。 动机: 我们有时候需要提供一个类,我们怎样才能保证一个类只有一个实例并且这个实例易于被访问?一个全局对象使得一个对象可以被访问,但是它不能防止你实例化多个实例。你的任何代码都能修改全局变量,这将不可避免的引起更多调试
阅读全文
摘要:如何实现字符串的翻转问题?延伸开来看,可以实现: 1.单词的顺序翻转,单词字母顺序不变 2.整个字符串字母全部翻转 3.单词顺序不变,单词字母翻转 4.实现中文翻转如下示例字符串:$str = "haha is houhou";1、单词的顺序翻转,单词字母顺序不变:function absort($str){//单词不变,字母翻转 $str_arr = explode(" ",$str); $str1 = ""; $len = count($str_arr); for($i=$len;$i--;$i>0){ $str1 .=$s
阅读全文
摘要:多态性:所谓多态性是指一段程序能够处理多种类型对象的能力,多态就是把子类对象赋值给父类引用,然后调用父类的方法,去执行子类覆盖父类的那个方法,但在PHP里是弱类型的,对象引用都是一样的不分父类引用,还是子类引用。多 态(Polymorphism)按字面上意思理解就是“多种形状”。可以理解为多种表现形式,也即“一个对外接口,多个内部实现方法”。在面向对象的理论 中,多态性的一般定义为:同一个操作作用于不同的类的实例,将产生不同的执行结果。也即不同类的对象收到相同的消息时,将得到不同的结果。在实际的应用开发中,采用面向对象中的多态主要在于可以将不同的子类对象都当作一个父类来处理,并且可以屏蔽不同子
阅读全文
摘要:静态变量: 只存在于函数作用域的变量,在函数执行完成后,这种变量的值不会丢失。下一次调用这个函数时,这个变量仍然会记住原来的值。如:function testing(){ static $a = 1; $a *= 2; echo $a . "\n";}testing();//2testing();//4testing();//8静态成员: 是一种类变量,可以把它看成是属于整个类而不是属于类的实例。所有的实例成员都共享这个成员。class MyObject{ public static $myStaticVar = 0; function myMethod(){ s...
阅读全文
摘要:拦截器方法:它可以拦截发送到未定义方法和属性的消息。方法 描述__get($property)访问未定义的属性时被调用__set($property)给未定义的属性赋值时被调用__isset($property,$value)对未定义的属性使用isset()时被调用__unset($property)对未定义的属性调用unset()时被调用__call($method,$arg_array)调用未定义的方法时被调用__autoload($classname)自动载入类重载可以通过__get, __set, __call几个特殊方法来进行. 当Zend引擎试图访问一个成员并没有找到时,PHP将.
阅读全文
摘要:面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP达到了软件工程的三个目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。首先,面向对象符合人类看待事物的一般规律。其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。为编程人员敞开了一扇大门,使其编程的代码 更简洁、更易于维护,并且具有更强的可重用性。1.类与对象类是生成对象的模板,对象是根据类中定义的模板所 构造的数据,即对象是类的
阅读全文
摘要:1、::、->、self、$this操作符的区别: 在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符::,反之如果被引用的变量或者方法没有被声明成const或者static,那么就必须使用操作符->。另外,如果从类的内部访问const或者static变量或者方法,那么就必须使用自引用的self,反之如果从类的内部访问不为const或者static变量或者方法,那么就必须使用自引用的$this。2、DIRECTORY_SEPARATOR:目录分隔符,linux上就是’/’ windows上是’
阅读全文
摘要:策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供。由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客户
阅读全文
摘要:require()和include()有许多相似之处,也有些不同。一般建议全局性的内容使用 require 在文件一开始的时候使用,用到的时候才包含进来的用 include 。require() 语句包含并运行指定文件。include() 语句包含并运行指定文件。require() 和 include() 除了怎样处理失败之外在各方面都完全一样。include() 产生一个警告而 require() 则导致一个致命错误。 如果你想在丢失文件时停止处理页面,那就别犹豫了,用 require() 吧。include() 就不是这样,脚本会继续运行。同时也要确认设置了合适的include_path.
阅读全文