php面向对象全攻略 (四)构造方法与析构方法


Posted in PHP onSeptember 30, 2009

8.构造方法与析构方法
大多数类都有一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函
数,也就是使用new 这个关键字来实例化对象的时候自动调用构造方法。
构造函数的声明与其它操作的声明一样,只是其名称必须是__construct( )。这是PHP5 中
的变化,以前的版本中,构造函数的名称必须与类名相同,这种在PHP5 中仍然可以用,但
现在以经很少有人用了,这样做的好处是可以使构造函数独立于类名,当类名发生改变时不
需要改相应的构造函数名称了。为了向下兼容,如果一个类中没有名为__construct( )的方法,
PHP 将搜索一个php4 中的写法,与类名相同名的构造方法。
格式:function __construct ( [参数] ) { ... ... }
在一个类中只能声明一个构造方法,而是只有在每次创建对象的时候都会去调用一次构
造方法,不能主动的调用这个方法,所以通常用它执行一些有用的初始化任务。比如对成属
性在创建对象的时候赋初值。
代码片段

<? 
//创建一个人类 
class Person{ 
//下面是人的成员属性 
var $name; //人的名字 
var $sex; //人的性别 
var $age; //人的年龄 
//定义一个构造方法参数为姓名$name、性别$sex和年龄$age 
function __construct($name, $sex, $age){ 
//通过构造方法传进来的$name给成员属性$this->name赋初使值 
$this->name=$name; 
//通过构造方法传进来的$sex给成员属性$this->sex赋初使值 
$this->sex=$sex; 
//通过构造方法传进来的$age给成员属性$this->age赋初使值 
$this->age=$age; 
} 
//这个人的说话方法 
function say(){ 
echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>"; 
} 
} 
//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄 
$p1=new Person(“张三”,”男”, 20); 
$p2=new Person(“李四”,”女”, 30); 
$p3=new Person(“王五”,”男”, 40); 
//下面访问$p1对象中的说话方法 
$p1->say(); 
//下面访问$p2对象中的说话方法 
$p2->say(); 
//下面访问$p3对象中的说话方法 
$p3->say(); 
?>

输出结果为:
我的名字叫:张三性别:男我的年龄是:20
我的名字叫:李四性别:女我的年龄是:30
我的名字叫:王五性别:男我的年龄是:40
如图:
php面向对象全攻略 (四)构造方法与析构方法 
析构函数:
与构造函数相对的就是析构函数。析构函数是PHP5 新添加的内容,在PHP4 中没有析
构函数。析构函数允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件,
释放结果集等,析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行,
也就是对象在内存中被销毁前调用析构函数。与构造函数的名称类似,一个类的析构函数名
称必须是__destruct( )。析构函数不能带有任何参数。
格式:function __destruct ( ) { ... ... }
代码片段
<? 
//创建一个人类 
class Person{ 
//下面是人的成员属性 
var $name; //人的名字 
var $sex; //人的性别 
var $age; //人的年龄 
//定义一个构造方法参数为姓名$name、性别$sex和年龄$age 
function __construct($name, $sex, $age){ 
//通过构造方法传进来的$name给成员属性$this->name赋初使值 
$this->name=$name; 
//通过构造方法传进来的$sex给成员属性$this->sex赋初使值 
$this->sex=$sex; 
//通过构造方法传进来的$age给成员属性$this->age赋初使值 
$this->age=$age; 
} 
//这个人的说话方法 
function say(){ 
echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>"; 
} 
//这是一个析构函数,在对象销毁前调用 
function __destruct(){ 
echo “再见”.$this->name.”<br>”; 
} 
//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄 
$p1=new Person(“张三”,”男”, 20); 
$p2=new Person(“李四”,”女”, 30); 
$p3=new Person(“王五”,”男”, 40); 
//下面访问$p1对象中的说话方法 
$p1->say(); 
//下面访问$p2对象中的说话方法 
$p2->say(); 
//下面访问$p3对象中的说话方法 
$p3->say(); 
?>

输出结果为:
我的名字叫:张三性别:男我的年龄是:20
我的名字叫:李四性别:女我的年龄是:30
我的名字叫:王五性别:男我的年龄是:40
再见张三
再见李四
再见王五
PHP 相关文章推荐
discuz论坛 用户登录 后台程序代码
Nov 27 PHP
phpmyadmin MySQL 加密配置方法
Jul 05 PHP
php shell超强免杀、减少体积工具实现代码
Oct 16 PHP
PHP使用DES进行加密与解密的方法详解
Jun 06 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
Jul 25 PHP
Yii实现MySQL多数据库和读写分离实例分析
Dec 03 PHP
学习php设计模式 php实现观察者模式(Observer)
Dec 09 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
Mar 30 PHP
thinkPHP中session()方法用法详解
Dec 08 PHP
Eclipse PHPEclipse 配置的具体步骤
Aug 08 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
May 21 PHP
PHP二维数组分页2种实现方法解析
Jul 09 PHP
php面向对象全攻略 (三)特殊的引用“$this”的使用
Sep 30 #PHP
php面向对象全攻略 (二) 实例化对象 使用对象成员
Sep 30 #PHP
php面向对象全攻略 (一) 面向对象基础知识
Sep 30 #PHP
PHP5 操作MySQL数据库基础代码
Sep 29 #PHP
PHP 字符截取 解决中文的截取问题,不用mb系列
Sep 29 #PHP
php 生成饼图 三维饼图
Sep 28 #PHP
php 不同编码下的字符串长度区分
Sep 26 #PHP
You might like
php生成WAP页面
2006/10/09 PHP
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
PHP+ajax分页实例简析
2015/12/07 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
JS下高效拼装字符串的几种方法比较与测试代码
2010/04/15 Javascript
使用jQuery清空file文件域的解决方案
2013/04/12 Javascript
JavaScript获取网页表单action属性的方法
2015/04/02 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
JS添加或修改控件的样式(Class)实现方法
2016/10/15 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
jquery自定义显示消息数量
2017/12/19 jQuery
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
在vue组件中使用axios的方法
2018/03/16 Javascript
Javascript实现购物车功能的详细代码
2018/05/08 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
Python中条件判断语句的简单使用方法
2015/08/21 Python
深入解析Python中的lambda表达式的用法
2015/08/28 Python
快速查询Python文档方法分享
2017/12/27 Python
如何基于python实现归一化处理
2020/01/20 Python
谈谈python垃圾回收机制
2020/09/27 Python
德国PC硬件网站:CASEKING
2016/10/20 全球购物
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
给酒店员工的表扬信
2014/01/11 职场文书
创意广告词
2014/03/17 职场文书
企业员工集体活动方案
2014/08/17 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
赢在执行观后感
2015/06/16 职场文书
用php如何解决大文件分片上传问题
2021/07/07 PHP
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS