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获取地址栏信息的代码
Oct 08 PHP
php简单实现短网址(短链)还原的方法(测试可用)
May 09 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
session 加入redis的实现代码
Jul 15 PHP
thinkPHP多语言切换设置方法详解
Nov 11 PHP
php获取今日开始时间和结束时间的方法
Feb 27 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
Jun 06 PHP
PHP环形链表实现方法示例
Sep 15 PHP
php/JS实现的生成随机密码(验证码)功能示例
Jun 06 PHP
php array_chunk()函数用法与注意事项
Jul 12 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
Aug 12 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中如何在有限的内存中读取大文件
2013/07/02 PHP
PHP连接SQLServer2005的方法
2015/01/27 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
PHP数组访问常用方法解析
2020/09/05 PHP
jquery的键盘事件修改代码
2011/02/24 Javascript
基于JQUERY的多级联动代码
2012/01/24 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
jQuery中get和post方法传值测试及注意事项
2014/08/08 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
Javascript动画效果(1)
2016/10/11 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
利用Node.js如何实现文件循环覆写
2019/04/05 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
Python lxml解析HTML并用xpath获取元素的方法
2019/01/02 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
Python实现名片管理系统
2020/02/14 Python
python实现一个猜拳游戏
2020/04/05 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
python缩进长度是否统一
2020/08/02 Python
德国百年厨具品牌WMF美国站:WMF美国
2016/09/12 全球购物
甜美蛋糕店创业计划书
2014/01/30 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
新年晚会开场白
2015/05/29 职场文书