background image

第二节--PHP5 的对象模型

PHP5 有一个单重继承的,限制访问的,可以重载的对象模型. 

本章稍后会详细讨论的 继承 ,

包含类间的父-子关系. 另外,PHP 支持对属性和方法的限制性访问. 你可以声明成员为
private,不允许外部类访问. 最后,PHP 允许一个子类从它的父类中重载成员.

注:PHP4 中没有 private,只有 public.private 对于更好地实现封装很有好处.

PHP5 的对象模型把对象看成与任何其它数据类型不同,通过引用来传递. PHP 不要求你通
过引用(reference)显性传递和返回对象. 在本章的最后将会详细阐述基于句柄的对象模型. 
它是 PHP5 中最重要的新特性.

有了更直接的对象模型,基于句柄的体系有附加的优势: 效率提高, 占用内存少,并且具有更
大的灵活性.

在 PHP 的前几个版本中,脚本默认复制对象.现在 PHP5 只移动句柄,需要更少的时间. 脚本
执行效率的提升是由于避免了不必要的复制. 在对象体系带来复杂性的同时,也带来了执
行效率上的收益. 同时,减少复制意味着占用更少的内存,可以留出更多内存给其它操作,这
也使效率提高.

注:基于句柄,就是说两个对象可以指向同一块内存,既减少了复制动作,又减少对内存的占
用.

Zand 引擎 2 具有更大的灵活性. 一个令人高兴的发展是允许析构--在对象销毁之前执行一
个类方法. 这对于利用内存也很有好处,让 PHP 清楚地知道什么时候没有对象的引用,把空
出的内存分配到其它用途.
第三节--定义一个类

当你声明一个类,

你需要列出对象应有的所有变量和所有函数 被称为属性和方法. 3.1.1

中显示了一个类的构成. 注意在大括号({})内你只能声明变量或者函数. 3.1.2 中显示了如
何在一个类中定义三个属性和两个方法.

3.1.1
class Name extends Another Class 

Access Variable Declaration 
Access Function Declaration 

3.1.2
<?php 
//

 

定义一个跟踪用户的类