PHP 类实例教程
klinghr
这个作者很懒,什么都没留下…
展开
-
PHP类实例教程(一):开始
从OOP(面向对象)的视角看,不应区分语言。无论是C++、无论是Java、无论是.net还有更多面向对象的语言,只要你了解了OOP的真谛,便可以跨越语言,让你的思想轻松的跳跃。便没有对于Java、.net 、 PHP 之间谁强谁弱的争执了。 希望这个介绍PHP5面向对象编程(OOP)的资料能让初学者受益,能让更多的PHPer开始转向OOP的编程过程。 相对PHP4,PHP5在面向对转载 2009-08-27 00:33:00 · 2141 阅读 · 0 评论 -
PHP类实例教程(十九):PHP类接口的定义与规范
接口(interface)是抽象方法和静态常量定义的集合。接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量。接口中没有其它类型的内容。 接口的定义我们先写接口的定义,后面几节再介绍接口的意义。下面的例子是接口的一个简单写法。<?phpinterface 接口名{ }?>下面的例子定义了一个接口 User ,这个接口中有两个抽象方法,get转载 2010-01-19 14:17:00 · 6565 阅读 · 0 评论 -
PHP类实例教程(二十):PHP类接口的实现接口
类实现接口要使用 implements 。类实现接口要实现其中的抽象方法。一个类可以实现多个接口。一个类可以使用 implements 实现接口,甚至可以实现多个接口。大部分的书说,这样是为了实现PHP的多继承。为什么呢? PHP5是单继承的,一个类只可以继承自一个父类。接口可以实现多个,这样就是多继承了。这样说有些道理。但,既然接口里面的方法没有方法体,所谓的多继承又有什么意义?转载 2010-01-19 14:20:00 · 10426 阅读 · 2 评论 -
PHP类实例教程(二十一):PHP类接口的继承
一个接口可以继承自另外的接口。PHP5中的类是单继承,但是接口很特殊。一个接口可以继承自多个接口。一个接口继承其它接口时候,直接继承父接口的静态常量属性和抽象方法。在PHP5中,接口是可以继承自另外一个接口的。这样代码的重用更有效了。要注意只有接口和接口之间使用 继承关键字extends。类实现接口必须实现其抽象方法,使用实现关键字 implements。接口实现继承要注意转载 2010-01-19 14:21:00 · 3071 阅读 · 0 评论 -
PHP类实例教程(二十三):PHP抽象类实现接口
抽象类实现接口,可以不实现其中的抽象方法,而将抽象方法的实现交付给具体能被实例化的类去处理。interface User{ function getName(); function setName($_name);} //此处只是实现了一个接口的一个方法abstract class abatractNormalUser implements User{ protected $name; funct转载 2010-01-19 14:22:00 · 1456 阅读 · 0 评论 -
PHP类实例教程(二十二):类型提示
PHP是弱类型语言,向方法传递参数时候也不太区分类型。这样的使用会引起很多的问题,PHP开发者认为,这些问题应该是由代码书写者在书写代码时进行检验以避免。没有类型提示很危险。<?phpclass NormalUser{ /* * 其它相关代码..省略........ */ private $age; public function setAge($_age) {转载 2010-01-19 14:22:00 · 2032 阅读 · 0 评论 -
PHP类实例教程(二十四):PHP5类中的多态
多态这个概念,在Java中指的是变量可以指向的对象的类型,可是变量声明类型的子类。对象一旦创建,它的类型是不变的,多态的是变量。在PHP5中,变量的类型是不确定的,一个变量可以指向任何类型的数值、字符串、对象、资源等。我们无法说PHP5中多态的是变量。我们只能说在PHP5中,多态应用在方法参数的类型提示位置。一个类的任何子类对象都可以满足以当前类型作为类型提示的类型要求。所有实现这个接转载 2010-01-19 14:23:00 · 2256 阅读 · 0 评论 -
PHP5的异常处理机制[8]--Try-catch 语句
Try-catch 语句为了进一步处理异常,我们需要使用try-catch语句—包括Try语句和至少一个的catch语句。任何调用 可能抛出异常的方法的代码都应该使用try语句。Catch语句用来处理可能抛出的异常。以下显示了我们处理getCommandObject()抛出的异常的方法: index_php5.php 后半段 <?php // PHP 5 try {转载 2010-01-31 01:17:00 · 1057 阅读 · 0 评论 -
PHP5的异常处理机制[1]--PHP5之前的错误处理之die()
在PHP5之前的程序错误处理多使用以下三种办法:1. 使用trigger_error()或die()函数来生成一个脚本层次的警告(warning)或致命错误(fatal error); 2. 在类方法或函数中返回一个错误标记(如false),也可能设置一个之后可以检查的属性或全局变量(如$error),然后在适合的地方检验其值再决定是否继续执行程序(如if($error==1){});转载 2010-01-31 00:02:00 · 1512 阅读 · 0 评论 -
PHP5的异常处理机制[2]--PHP5之前的错误处理之trigger_error()
我们或许可以通过trigger_error()生成一个用户警告来代替,使程序更具有灵活性。 Index2.php<?php // PHP 4 require_once(cmd_php4/Command.php); class CommandManager { var $cmdDir = "cmd_php4"; function getComman转载 2010-01-31 00:37:00 · 1353 阅读 · 0 评论 -
PHP5的异常处理机制[4]--PHP5之前的错误处理--使用PEAR处理错误
(三)使用PEAR处理错误你也可以使用PEAR来处理错误。当发生错误,将返回一个 Pear_Error对象。后面的代码通过一个静态方法PEAR::isError()来检验这个对象。如果错误确实发生了,那么返回的Pear_Error对象将提供你需要的所有相关信息: PEAR::getMessage() - the error message 出错信息PEAR:转载 2010-01-31 00:42:00 · 967 阅读 · 0 评论 -
PHP5的异常处理机制[9]--同时处理多个错误
处理多个错误转载 2010-01-31 01:19:00 · 821 阅读 · 0 评论 -
PHP5的异常处理机制[3]--PHP5之前的错误处理--返回Error flag(错误标记)
(二)返回错误标记脚本层次的错误处理比较粗糙但很有用。尽管如此,我们有时需要更大的灵活性。我们可以使用返回错误标识的办法来告诉客户代码“错误发生了!”。这将程序是否继续,如何继续的责任交给客户代码来决定。 这里我们改进了前面的例子来返回一个脚本执行出错的标志(false是一个常用的不错的选择)。 index3.php <?php // PHP 4 require_once(转载 2010-01-31 00:39:00 · 892 阅读 · 0 评论 -
PHP5的异常处理机制[5]--PHP5之前的错误处理--小结
综合以上的讨论,我们需要一个这样的错误处理机制: 1.允许一个方法给出一个出错标记给客户代码 2.提供程序错误的详细信息 3.让你同时判断多个出错条件,将你的错误报告和程序处理流程分开。 4.返回值必须是独立的类型,不会与正常返回的类型相混淆 PHP的异常机制恰好完全满足以上要求。转载 2010-01-31 00:49:00 · 666 阅读 · 0 评论 -
PHP5的异常处理机制[6]--PHP5内建的Exception类
PHP5的异常机制根据我们以上讨论的,PHP内建的异常类需要有以下成员方法: __construct() 构造函数,需要一个出错信息和一个可选的整型错误标记作参数 getMessage() 取得出错信息 getCode() 出错的代码 getFile() 异常发生的文件 getLine()转载 2010-01-31 00:51:00 · 801 阅读 · 0 评论 -
PHP5的异常处理机制[7]--使用throw关键字
使用 throw关键字 建立一个Exception对象后你可以将对象返回,但不应该这样使用,更好的方法是用throw关键字来代替。throw用来抛出异常: <?phpthrow new Exception( "my message", 44 ); ?>throw 将脚本的执行中止,并使相关的Exception对象对客户代码可用。 以下是改进过的getCommandObj转载 2010-01-31 00:56:00 · 977 阅读 · 0 评论 -
PHP类实例教程(十八):设计模式之模版模式
抽象类的应用就是典型的模版模式,先声明一个不能被实例化的模版,在子类中去依照模版实现具体的应用。 模版模式实例我们写这样一个应用:银行计算利息,都是利率乘以本金和存款时间,但各种存款方式计算利率的方式不同,所以,在账户这个类的相关方法里,只搭出算法的骨架,但不具体实现。具体实现由各个子类来完成。<?php//程序设计模式的模块部分abstract class LoadAcc转载 2010-01-19 14:16:00 · 2469 阅读 · 1 评论 -
PHP类实例教程(十七):abstract类和abstract方法
可以使用abstract来修饰一个类或者方法。用abstract修饰的类表示这个类是一个抽象类,用abstract修饰的方法表示这个方法是一个抽象方法。抽象类不能被实例化。抽象方法是只有方法声明,而没有方法的实现内容。abstract 抽象类可以使用abstract来修饰一个类。用abstract修饰的类表示这个类是一个抽象类。抽象类不能被实例化。这是一个简单抽象的转载 2010-01-19 14:13:00 · 41013 阅读 · 7 评论 -
PHP类实例教程(三):PHP5类中的属性
属性:用来描述对象的数据元素称为对象的属性(也称为数据/状态),在PHP5中,属性指在class中声明的变量。在声明变量时,必须使用 public private protected 之一进行修饰,定义变量的访问权限。(public private protected三者的区别将在以后讲解)属性的使用:通过引用变量的-> 符号调用变量指向对象的属性。在方法内部通过 $this-> 符转载 2009-08-27 00:51:00 · 3520 阅读 · 0 评论 -
PHP类实例教程(四):PHP5类中的方法
方法:对对象的属性进行的操作称为对象的方法(也称为行为/操作)。过程 函数 方法过程:过程是编制程序时定义的一个语句序列,用来完成某种指定的操作。函数:函数有返回值,也是定义的语句序列。方法:在面向对象概念中,类里面的一段语句序列。一般来说,在面向对象概念中,函数和方法两个名词是通用的。通过方法读取属性下面的例子将属性设置为private ,同时声明了public的ge转载 2009-08-27 08:39:00 · 3674 阅读 · 2 评论 -
PHP类实例教程(二):类和对象的基础部分
Everything is Object:万事万物皆对象面向对象的编程(OOP)思想力图使对计算机语言中对事物的描述与现实世界中该事物的本来面目尽可能的一致。(面向对象语言与我们的生活是相通的,面向对象语言学习起来其实很简单。在应用中更符合我们的生活逻辑。)Class/Object:类(class)和对象(object)是面向对象方法的核心概念。类是对一类事物描述,是抽象的、概念上的定转载 2009-08-27 00:41:00 · 2658 阅读 · 1 评论 -
PHP类实例教程(五):对象的比较
在PHP中有 = 赋值符号、== 等于符号和 === 全等于符号, 这些符号代表什么意思?当使用比较操作符(==)时,对象以一种很简单的规则比较:当两个对象有相同的属性和值,属于同一个类且被定义在相同的命名空间中,则两个对象相等。等于符号比较对象时,比较对象是否有相同的属性和值。注意:== 比较两个不同的对象的时候,可能相等也可能不等。<?phpclass Person{ publ转载 2009-08-27 11:39:00 · 2393 阅读 · 0 评论 -
PHP类实例教程(六):构造函数
构造方法又称为构造函数,是对象被创建时自动调用的方法,用来完成类初始化的工作。构造函数和其它函数一样,可以传递参数,可以设定参数默认值。构造函数可以调用属性,可以调用方法。构造函数可以被其它方法显式调用。在PHP4 中使用与类名同名的方法为构造函数。在PHP5中依然支持了这种方式,但不建议再使用这种方式。 <?php class Person { priv转载 2010-01-18 17:56:00 · 1880 阅读 · 0 评论 -
PHP类实例教程(七):析构函数与PHP的垃圾回收
析构函数:当某个对象成为垃圾或者当对象被显式销毁时执行。GC (Garbage Collector) 在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内存中销毁。这是PHP的GC (Garbage Collector)垃圾处理机制,防止内存溢出。当一个PHP线程结束时,当前占用的所有内存空间都会被销毁,当前程序中的所有对象同样被销毁。__destruct()转载 2010-01-18 18:09:00 · 4545 阅读 · 0 评论 -
PHP类实例教程(八):类的继承
继承是面向对象最重要的特点之一,就是可以实现对类的复用。通过“继承”一个现有的类,可以使用已经定义的类中的方法和属性。 继承而产生的类叫做子类。被继承的类,叫做父类,也被成为超类。PHP是单继承的,一个类只可以继承一个父类,但一个父类却可以被多个子类所继承。从子类的角度看,它“ 继承(inherit , extends)”自父类;而从父类的角度看,它“派生(derive)”转载 2010-01-19 14:03:00 · 2650 阅读 · 1 评论 -
PHP类实例教程(九):访问控制 private, protected, public
在PHP5中,可以在类的属性和方法前面加上一个修饰符(modifier),来对类进行一些访问上的控制。Public(公开): 可以自由的在类的内部外部读取、修改。Private(私有): 只能在这个当前类的内部读取、修改。Protected(受保护):能够在这个类和类的子类中读取和修改。Private的访问权限private 不能直接被外部调用,只能由当前对象调用。前面介绍过关于封装的内容转载 2010-01-19 14:04:00 · 3090 阅读 · 0 评论 -
PHP类实例教程(十):类的重写(override)
如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。 当对父类的方法进行重写时,子类中的方法必须和父类中对应的方法具有相同的方法名称,在PHP5中不限制输入参数类型、参数数量和返回值类型。(这点和JAVA不同) 子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。声明方法时,如果不定义访问权限。默认权限为public。先设置转载 2010-01-19 14:05:00 · 7850 阅读 · 0 评论 -
PHP类实例教程(十一):类中this关键字
PHP5中为解决变量的命名冲突和不确定性问题,引入关键字“$this”代表其所在当前对象。$this在构造函数中指该构造函数所创建的新对象。在类中使用当前对象的属性和方法,必须使用$this->取值。方法内的局部变量,不属于对象,不使用$this关键字取值。局部变量和全局变量与 $this 关键字,使用当前对象的属性必须使用$this关键字。局部变量的只在当前对象的方法内有效,所以转载 2010-01-19 14:06:00 · 7327 阅读 · 0 评论 -
PHP类实例教程(十二):类中parent::关键字
PHP5中使用parent::来引用父类的方法。 parent:: 可用于调用父类中定义的成员方法。parent::的追溯不仅于直接父类。通过parent::调用父类方法<?phpclass employee{ protected $sal = 3000; public function getSal() { $this->sal = $this->转载 2010-01-19 14:07:00 · 2305 阅读 · 1 评论 -
PHP类实例教程(十三):Static的用法
static关键字用来修饰属性、方法,称这些属性、方法为静态属性、静态方法。static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”如果访问控制权限允许,可不必创建该类对象而直接使用类名加两个冒号“::”调用。static关键字可以用来修饰变量、方法。不经过实例化,就可以直接访问类中stati转载 2010-01-19 14:08:00 · 4547 阅读 · 6 评论 -
PHP类实例教程(十四):设计模式之单件模式
单件模式要解决的问题就是“如何让这个类只有一个实例”。我们的web应用中,大量使用了数据库连接,如果反复建立与数据库的连接必然消耗更多的系统资源。我们如何解决这个问题,建立唯一的数据库连接是必要的方式。 我们又如何知道与这个数据库的连接是否已经建立? 还是需要现在建立?单件模式可以解决这个问题。 先假设我们需要一个类完成在内存中只有一份的功能,我们该如何做呢? 我们一步一步转载 2010-01-19 14:10:00 · 1912 阅读 · 0 评论 -
PHP类实例教程(十五):final类、final方法和常量
final---用于类、方法前。final类---不可被继承。final方法---不可被覆盖。final类不能被继承。如果我们不希望一个类被继承,我们使用final来修饰这个类。于是这个类将无法被继承。 比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型。<?php//声明一个final类M转载 2010-01-19 14:11:00 · 1704 阅读 · 0 评论 -
PHP类实例教程(十六):PHP5中的常量
在PHP5类中继续使用cons修饰常量。我们使用const定义一个常量,定义的这个常量不能被改变。在PHP5中const定义的常量与定义变量的方法不同,不需要加$修饰符。 const PI = 3.14; 这样就可以。而使用const 定义的常量名称一般都大写,这是一个约定,在任何语言中都是这样。 如果定义的常量由多个单词组成,使用 _ 连接,这也是约定。比如, MAX_MUMBER转载 2010-01-19 14:12:00 · 2213 阅读 · 0 评论 -
PHP __set() __get() __isset() __unset() 四个方法的应用
一般来说,总是把类的属性定义为 private,这更符合现实的逻辑。但是,对属性的读取和赋值操作是非常频繁的,因此在 PHP5 中,预定义了两个函数“__get()”和“__set()”来获取和赋值其属性,以及检查属性的“__isset()”和删除属性的方法“__unset()”。 上一节中,我们为每个属性做了设置和获取的方法,在 PHP5 中给我们提供了专门为属性设置值和获取值的方法,转载 2010-03-21 22:31:00 · 2071 阅读 · 2 评论