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类接口的继承

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

阅读全文 »

Jerry Bendy 发布于 07月27, 2013

网页中id与name的区别

上周我也遇到了ID和Name的问题,在页面里输入了一个inputtype="hidden",只写了一个ID="SliceInfo",赋值后submit,在后台用$_GET["SliceInfo"]却怎么也取不到值。后来恍然大悟因该用Name来标示,于是在input里加了个Name="SliceInfo",就一切ok了。可以说几乎每个做过Web开发的人都问过,到底元素的ID和Name有什么区别阿?为什么有了ID还要有Name呢?!而同样我们也可以得到最classical的答案:ID就像是一个人的身份证号码,而Name就像是他的名字,ID...

阅读全文 »

Jerry Bendy 发布于 07月27, 2013

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

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

阅读全文 »

Jerry Bendy 发布于 07月27, 2013

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

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

阅读全文 »

Jerry Bendy 发布于 07月27, 2013

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

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

阅读全文 »

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月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月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月12, 2013

硬盘写入助手出现Change partition type to AF: not a HFS partition错误的解决方法

安装黑苹果时使用硬盘写入助手写入系统镜像到分区时出现ChangepartitiontypetoAF:notaHFSpartition的错误Imagefile:D:\QQDownload\OS_X_Lion\OS_X_Lion.isoType:iso/hfs.Filesize:4144381952BytesImagesize:4101210111BytesTodriver:eDriversize:6447693824BytesDumpimagefiletodriver,pleasewait...ChangepartitiontypetoAF:notaHFSpartitionLoadboot1h:notaHFSpar...

阅读全文 »