8.构造方法与析构方法 大多数类都有一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函 数,也就是使用new 这个关键字来实例化对象的时候自动调用构造方法。 构造函数的声明与其它操作的声明一样,只是其名称必须是__construct( )。这是PHP5 中 的变化,以前的版本中,构造函数的名称必须与类名相同,这种在PHP5 中仍然可以用,但 现在以经很少有人用了,这样做的好处是可以使构造函数独立于类名,当类名发生改变时...
自动加载类 很多开发者写面向对象的应用程序时,对每个类的定义建立一个PHP 源文件。一个很大 的烦恼是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件的列表。 在软件开发的系统中,不可能把所有的类都写在一个PHP 文件中,当在一个PHP 文件 中需要调用另一个文件中声明的类时,就需要通过include 把这个文件引入。不过有的时候, 在文件众多的项目中,要一一将所需类的文件都include 进来,是一个很让人头疼的事,所...
9.封装性 封装性是面向对象编程中的三大特性之一,封装性就是把对象的属性和服务结合成一个 独立的相同单位,并尽可能隐蔽对象的内部细节,包含两个含义:1.把对象的全部属性和全 部服务结合在一起,形成一个不可分割的独立单位(即对象)。2.信息隐蔽,即尽可能隐蔽对 象的内部细节,对外形成一个边界〔或者说形成一道屏障〕,只保留有限的对外接口使之与外 部发生联系。 封装的原则在软件上的反映是:要求使对象以外的部分不能随...
10.__set() __get() __isset() __unset()四个方法的应用 一般来说,总是把类的属性定义为private,这更符合现实的逻辑。但是,对属性的读取 和赋值操作是非常频繁的,因此在PHP5 中,预定义了两个函数“__get()”和“__set()”来获 取和赋值其属性,以及检查属性的“__isset()”和删除属性的方法“__unset()”。 上一节中,我们为每个属性做了设置和获取的方法,在PHP5 中给我们提供了专门为属 性设置值和获取值的方法,“__set()”...
12.重载新的方法 在学习PHP 这种语言中你会发现,PHP 中的方法是不能重载的,所谓的方法重载就是 定义相同的方法名,通过“参数的个数”不同或“参数的类型”不同,来访问我们的相同方法 名的不同方法。但是因为PHP 是弱类型的语言,所以在方法的参数中本身就可以接收不同类 型的数据,又因为PHP 的方法可以接收不定个数的参数,所以通过传递不同个数的参数调用 不相同方法名的不同方法也是不成立的。所以在PHP 里面没有方法重载。不...
11.类的继承 继承作为面向对象的三个重要特性的一个方面,在面向对象的领域有着极其重要的作用, 好像没听说哪个面向对象的语言不支持继承。继承是PHP5 面向对象程序设计的重要特性之 一,它是指建立一个新的派生类,从一个或多个先前定义的类中继承数据和函数,而且可以 重新定义或加进新数据和函数,从而建立了类的层次或等级。说的简单点就是,继承性是子 类自动共享父类的数据结构和方法的机制,这是类之间的一种关系。在定义和...
13.访问类型 类型的访问修饰符允许开发人员对类成员的访问进行限制,这是PHP5 的新特性,但却 是OOP 语言的一个好的特性。而且大多数OOP 语言都已支持此特性。PHP5 支持如下3 种访 问修饰符 public (公有的、默认的),private (私有的)和protected (受保护的)三种。 public 公有修饰符,类中的成员将没有访问限制,所有的外部成员都可以访问(读和写) 这个类成员(包括成员属性和成员方法),在PHP5 之前的所有版本中,PHP 中类的...
14.final 关键字的应用 这个关键字只能用来定义类和定义方法,不能使用final 这个关键字来定义成员属性,因 为final 是常量的意思,我们在PHP 里定义常量使用的是define()函数,所以不能使用final 来 定义成员属性。 使用final 关键标记的类不能被继承; 代码片段 final class Person{ … … } class Student extends Person{ } 会出现下面错误: Fatal error: Class Student may not inherit from final class (Person) 使用final ...
抽象方法和抽象类 在OOP 语言中,一个类可以有一个或多个子类,而每个类都有至少一个公有方法做为 外部代码访问其的接口。而抽象方法就是为了方便继承而引入的,我们先来看一下抽象类和 抽象方法的定义再说明它的用途。 什么是抽象方法?我们在类里面定义的没有方法体的方法就是抽象方法,所谓的没有方 法体指的是,在方法声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后 加上分号结束,另外在声明抽象方法时还要...
16.__toString()方法 我们前面说过在类里面声明“— ”开始的方法名的方法(PHP 给我们提供的),都是在 某一时刻不同情况下自动调用执行的方法,“__toString()”方法也是一样自动被调用的,是在 直接输出对象引用时自动调用的, 前面我们讲过对象引用是一个指针,比如说:“$p=new Person()”中,$p 就是一个引用,我们不能使用echo 直接输出$p,这样会输出“Catchable fatal error: Object of class Person could not be conver...
20.PHP5 接口技术 PHP 与大多数面向对象编程语言一样,不支持多重继承.也就是说每个类只能继承一个父 类。为了解决这个问题,PHP 引入了接口,接口的思想是指定了一个实现了该接口的类必须 实现的一系列方法。接口是一种特殊的抽象类,抽象类又是一种特殊的类,所以接口也是一 种特殊的类,为什么说接口是一种特殊的抽象类呢?如果一个抽象类里面的所有的方法都是 抽象方法,那么我们就换一种声明方法使用“接口”;也就是说接口里面...
多态的应用 多态是除封装和继承之外的另一个面向对象的三大特性之一,我个人看来PHP 中虽然可 以实现多态,但和C++还有Java 这些面向对象的语言相比,多态性并不是那么突出,因为PHP 本身就是一种弱类型的语言,不存在父类对象转化为子类对象或者是子类对象转化为父类对 象的问题,所以多态的应用并不是那么的明显;所谓多态性是指一段程序能够处理多种类型 对象的能力,比如说在公司上班,每个月财务发放工资,同一个发工资的方法...
把对象串行化 有时候需要把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串, 等到达另一端时,再还原为原来的对象,这个过程称之为串行化,就像我们现在想把一辆汽 车通过轮船运到美国去,因为汽车的体积比较大,我们可以把汽车拆开成小的部件,然后我们把这些部件通过轮般运到美国去,到了美国再把这些部件组装回汽车。 有两种情况我们必须把对象串行化,第一种情况就是把一个对象在网络中传输的时候要 将对象...
在这一节中,我们就来看看在PHP中如何创建一个类和对象。 1. 创建类 在PHP中,创建一个类和在C#/Java中基本类似,闲话少说,给大家看个最简单的例子: 代码如下:<?php class People { var $name; public function GetName() { return $this->name; } public function SetName($name) { $this->name=$name; } } $p=new People(); $p->SetName("kym"); echo($p->GetName()); ?> 这里,我们就创建一个People的类,在这里有四个要点说...
但是我们知道,面向对象有三大特征:继承,多态和封装。 1. 继承 我们继续上一节中的例子,在PHP中,继承和Java是一样的,都使用extends关键字。 代码如下:class People { private $name; public function GetName() { return $this->name; } public function SetName($name) { $this->name=$name; } } class Student extends People { private $grade; public function SayHello() { echo("Good Morning,".parent::GetName()); }...