标签PHP下的文章

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...

阅读全文 »

Jerry Bendy 发布于 07月16, 2013

PHP类实例教程(十五):final类、final方法和常量

final---用于类、方法前。final类---不可被继承。final方法---不可被覆盖。final类不能被继承。如果我们不希望一个类被继承,我们使用final来修饰这个类。于是这个类将无法被继承。比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型。<?php//声明一个final类MathfinalclassMath{publicstatic$pi=3.14;publicfunction__toString(){return"这是Math类。";}}$math=newMath();echo$math;//声明类SuperMat...

阅读全文 »

Jerry Bendy 发布于 07月16, 2013

PHP类实例教程(十六):PHP5中的常量

在PHP5类中继续使用cons修饰常量。我们使用const定义一个常量,定义的这个常量不能被改变。在PHP5中const定义的常量与定义变量的方法不同,不需要加$修饰符。constPI=3.14;这样就可以。而使用const定义的常量名称一般都大写,这是一个约定,在任何语言中都是这样。如果定义的常量由多个单词组成,使用_连接,这也是约定。比如,MAX_MUMBER这样的命名方式。一个良好的命名方式,是程序员必须注意的。类中的常量使用起来类似静态变量,不同点只是它的值不能被改变。我们使用类名::常量名来调用这个常量。<?php//声明一个final类MathclassMath{constPI=3.14;pub...

阅读全文 »

Jerry Bendy 发布于 07月12, 2013

PHP类实例教程(十四):设计模式之单件模式

单件模式要解决的问题就是“如何让这个类只有一个实例”。我们的web应用中,大量使用了数据库连接,如果反复建立与数据库的连接必然消耗更多的系统资源。我们如何解决这个问题,建立唯一的数据库连接是必要的方式。我们又如何知道与这个数据库的连接是否已经建立?还是需要现在建立?单件模式可以解决这个问题。先假设我们需要一个类完成在内存中只有一份的功能,我们该如何做呢?我们一步一步的使用前面学过的知识来写一个单件的例子。问题1:前面学过,每次用new类名的方式,就可以创建一个对象。我们必须禁止外部程序用new类名的方式来创建多个实例。解决办法:我们将构造函数设置成private,让构造函数只能在内部被调用,而外部不能调用。这样,...

阅读全文 »

Jerry Bendy 发布于 07月11, 2013

PHP类实例教程(十一):类中this关键字

PHP5中为解决变量的命名冲突和不确定性问题,引入关键字“$this”代表其所在当前对象。$this在构造函数中指该构造函数所创建的新对象。在类中使用当前对象的属性和方法,必须使用$this->取值。方法内的局部变量,不属于对象,不使用$this关键字取值。局部变量和全局变量与$this关键字,使用当前对象的属性必须使用$this关键字。局部变量的只在当前对象的方法内有效,所以直接使用。注意:局部变量和属性可以同名,但用法不一样。在使用中,要尽量避免这样使用,以免混淆。<?phpclassA{private$a=99;//这里写一个打印参数的方法publicfunctionprintInt($a){e...

阅读全文 »

Jerry Bendy 发布于 07月11, 2013

PHP类实例教程(十二):类中parent::关键字

PHP5中使用parent::来引用父类的方法。parent::可用于调用父类中定义的成员方法。parent::的追溯不仅于直接父类。通过parent::调用父类方法<?php/***声明一个员工类,经理类继承自员工类*/classemployee{protected$sal=3000;publicfunctiongetSal(){$this->sal=$this->sal+1200;return$this->sal;}}classManagerextendsemployee{//如果想让经理在员工工资的基础上多发1500元//必须先调用父类的getSal()方法publicfunctio...

阅读全文 »

Jerry Bendy 发布于 07月11, 2013

PHP类实例教程(十三):Static的用法

static关键字用来修饰属性、方法,称这些属性、方法为静态属性、静态方法。static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”如果访问控制权限允许,可不必创建该类对象而直接使用类名加两个冒号“::”调用。static关键字可以用来修饰变量、方法。不经过实例化,就可以直接访问类中static的属性和static的方法。static的属性和方法,只能访问static的属性和方法,不能类访问非静态的属性和方法。因为静态属性和方法被创建时,可能还没有任何这个类的实例可以被调用。static的属性,在内存中只有一份,为所有的实例共用。使用sel...

阅读全文 »

Jerry Bendy 发布于 07月06, 2013

PHP类实例教程(十):类的重写(override)

如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。当对父类的方法进行重写时,子类中的方法必须和父类中对应的方法具有相同的方法名称,在PHP5中不限制输入参数类型、参数数量和返回值类型。(这点和JAVA不同)子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。声明方法时,如果不定义访问权限。默认权限为public。先设置一个父类,这个父类是“Dog”类,这个类描述了dog的特性。Dog有2个眼睛,会跑,会叫。就这样描述先。我养了一直狗,是只小狗,符合Dog类的特性,但有所不同。我的小狗有名字,我的小狗太小了,不会大声的叫,只会哼哼。我们用继...

阅读全文 »

Jerry Bendy 发布于 07月04, 2013

PHP函数中任意数量参数的简单用法

你可能知道PHP允许你定义一个默认参数的函数。但你可能并不知道PHP还允许你定义一个完全任意的参数的函数下面是一个示例向你展示了默认参数的函数:<?php//两个默认参数的函数functionfoo($arg1='',$arg2=''){echo"arg1:$arg1\n";echo"arg2:$arg2\n";}foo('hello','world');foo();?>现在我们来看一看一个不定参数的函数,其使用到了func_get_args()方法:<?phpfunctionfoo(){//取得所有的传入参数的数组$args=func_get_args();foreach($argsas$k=...

阅读全文 »