标签OOP下的文章

Jerry Bendy 发布于 01月21, 2014

一张图讲述PHP面向对象基础

这张图片还是我在群里偶然发现的,概括得挺全面,涉及到PHP面向对象的基本用法、面象对象的基本概念、辅助函数、反射等等,源文件名是PHP5OOP思维导图.jpg不过这张图只适合初学PHP面向对象的人继续对其加深印象,已经会使用面向对象的应该继续深入学习PHP高级面向对象及设计模式,这些也就不适用了。先贴个小图,后面再附上大图的地址: 完整大图地址...

阅读全文 »

Jerry Bendy 发布于 12月31, 2013

PHP高级面向对象:__call()详解

这是我写的第一篇面向对象的高级教程,主要思路来源于《深入PHP:面向对象、模式与实践》,我感觉这本书写得很好,我才读了三分之一就感觉获益匪浅。这次我要写的的关于PHP的魔法函数__call()的用法(语文是数学老师教的,文字可能太啰嗦,请见谅)。classfoo{function__call($name,$param){echo'你调用的函数名是'.$name;echo'调用参数是'.$parma;}}$bar=newfoo();foo->abc();很多教程都会给出如上这样的__call的基本使用方法,也就是在外部调用一个类里面不存在的函数时(注意是函数,而不是属性,如果是属性的话应该用__get()),...

阅读全文 »

Jerry Bendy 发布于 07月30, 2013

PHP类实例教程(二十四):PHP5类中的多态

多态这个概念,在Java中指的是变量可以指向的对象的类型,可是变量声明类型的子类。对象一旦创建,它的类型是不变的,多态的是变量。在PHP5中,变量的类型是不确定的,一个变量可以指向任何类型的数值、字符串、对象、资源等。我们无法说PHP5中多态的是变量。我们只能说在PHP5中,多态应用在方法参数的类型提示位置。一个类的任何子类对象都可以满足以当前类型作为类型提示的类型要求。所有实现这个接口的类,都可以满足以接口类型作为类型提示的方法参数要求。简单的说,一个类拥有其父类、和已实现接口的身份。通过实现接口实现多态<?phpclassUser{//User接口publicfunctiongetName(){}}cl...

阅读全文 »

Jerry Bendy 发布于 07月28, 2013

PHP类实例教程(二十一):PHP类接口的继承

一个接口可以继承自另外的接口。PHP5中的类是单继承,但是接口很特殊。一个接口可以继承自多个接口。一个接口继承其它接口时候,直接继承父接口的静态常量属性和抽象方法。在PHP5中,接口是可以继承自另外一个接口的。这样代码的重用更有效了。要注意只有接口和接口之间使用继承关键字extends。类实现接口必须实现其抽象方法,使用实现关键字implements。接口实现继承要注意只有接口和接口之间使用继承关键字extends。类实现接口必须实现其抽象方法,使用实现关键字implements。这个例子定义接口User,User有两个抽象方法getName和setName。又定义了接口VipUser,继承自User接口,并增加...

阅读全文 »

Jerry Bendy 发布于 07月28, 2013

PHP类实例教程(二十二):类型提示

PHP是弱类型语言,向方法传递参数时候也不太区分类型。这样的使用会引起很多的问题,PHP开发者认为,这些问题应该是由代码书写者在书写代码时进行检验以避免。没有类型提示很危险。<?phpclassNormalUser{/**其它相关代码..省略........*/private$age;publicfunctionsetAge($_age){$this->age=$_age;}publicfunctiongetAge(){return$this->age;}}$normalUser=newNormalUser();$normalUser->setAge("Iamtom");//这里我们传输一...

阅读全文 »

Jerry Bendy 发布于 07月28, 2013

PHP类实例教程(二十三):PHP抽象类实现接口

抽象类实现接口,可以不实现其中的抽象方法,而将抽象方法的实现交付给具体能被实例化的类去处理。<?phpinterfaceUser{functiongetName();functionsetName($_name);}//此处只是实现了一个接口的一个方法abstractclassabatractNormalUserimplementsUser{protected$name;functiongetName(){return$this->name;}}//这里实现了接口的另外一个方法classNormalUserextendsabatractNormalUser{functionsetName($_name...

阅读全文 »

Jerry Bendy 发布于 07月27, 2013

PHP类实例教程(十七):abstract类和abstract方法

可以使用abstract来修饰一个类或者方法。用abstract修饰的类表示这个类是一个抽象类,用abstract修饰的方法表示这个方法是一个抽象方法。抽象类不能被实例化。抽象方法是只有方法声明,而没有方法的实现内容。abstract抽象类可以使用abstract来修饰一个类。用abstract修饰的类表示这个类是一个抽象类。抽象类不能被实例化。这是一个简单抽象的方法,如果它被直接实例化,系统会报错。<?php//定义一个抽象类abstractclassUser{publicfunction__toString(){returnget_class($this);}}//实例化这个类会出现错误echonewU...

阅读全文 »

Jerry Bendy 发布于 07月27, 2013

PHP类实例教程(十八):设计模式之模版模式

抽象类的应用就是典型的模版模式,先声明一个不能被实例化的模版,在子类中去依照模版实现具体的应用。模版模式实例我们写这样一个应用:银行计算利息,都是利率乘以本金和存款时间,但各种存款方式计算利率的方式不同,所以,在账户这个类的相关方法里,只搭出算法的骨架,但不具体实现。具体实现由各个子类来完成。<?php//程序设计模式的模块部分abstractclassLoadAccount{//利息,本金protected$interest,$fund;publicfunctioncalculateInterest(){//取得利率$this->interest=getInterestRate();//用于计算利息...

阅读全文 »

Jerry Bendy 发布于 07月27, 2013

PHP类实例教程(十九):PHP类接口的定义与规范

接口(interface)是抽象方法和静态常量定义的集合。接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量。接口中没有其它类型的内容。接口的定义我们先写接口的定义,后面几节再介绍接口的意义。下面的例子是接口的一个简单写法。<?phpinterface接口名{}?>下面的例子定义了一个接口User,这个接口中有两个抽象方法,getName()和setName()。能看到接口的写法和类很相似。<?phpinterfaceUser{functionsetName($name);functiongetName();}?>接口中的抽象方法注意,在接口中只能有抽象方法。如果在接口中出现了非...

阅读全文 »

Jerry Bendy 发布于 07月27, 2013

PHP类实例教程(二十):PHP类接口的实现接口

类实现接口要使用implements。类实现接口要实现其中的抽象方法。一个类可以实现多个接口。一个类可以使用implements实现接口,甚至可以实现多个接口。大部分的书说,这样是为了实现PHP的多继承。为什么呢?PHP5是单继承的,一个类只可以继承自一个父类。接口可以实现多个,这样就是多继承了。这样说有些道理。但,既然接口里面的方法没有方法体,所谓的多继承又有什么意义?接口的意义在于后面一节继续说的多态。使用implements实现接口使用implements来实现一个接口。如果实现接口而没有实现其中的抽象方法,会报错如下。Fatalerror:InterfacefunctionUser::getName()c...

阅读全文 »