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 相关文章推荐
用PHP读取flv文件的播放时间长度
Sep 03 PHP
php 日期时间处理函数小结
Dec 18 PHP
php使用curl访问https示例分享
Jan 17 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
Sep 27 PHP
ThinkPHP模版中导入CSS和JS文件的方法
Nov 29 PHP
php 实现进制相互转换
Apr 07 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
Apr 15 PHP
PHP 数组遍历foreach语法结构及实例
Jun 13 PHP
php实现URL加密解密的方法
Nov 17 PHP
PHP实用小技巧之调用录像的方法
Dec 05 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
Dec 31 PHP
php+websocket 实现的聊天室功能详解
May 27 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 获取select下拉列表框的值
2010/05/08 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
ExtJS的拖拽效果示例
2013/12/09 Javascript
JS的get和set使用示例
2014/02/20 Javascript
JSON取值前判断
2014/12/23 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
node.js的事件机制
2017/02/08 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
JavaScript中的函数式编程详解
2020/08/22 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
js实现简单的倒计时
2021/01/28 Javascript
Python实现检测文件MD5值的方法示例
2018/04/11 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
html5 canvas简单封装一个echarts实现不了的饼图
2018/06/12 HTML / CSS
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
面向对象设计的原则是什么
2013/02/13 面试题
医学生自我鉴定范文
2013/11/08 职场文书
班长岗位职责
2013/11/10 职场文书
关爱残疾人演讲稿
2014/05/24 职场文书
2015年财务人员工作总结
2015/04/10 职场文书
清明祭英烈活动总结
2015/05/11 职场文书
预备党员介绍人意见
2015/06/01 职场文书
2016年第16个全民国防教育日宣传活动总结
2016/04/05 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python
springboot入门 之profile设置方式
2022/04/04 Java/Android