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你的验证码安全码?
Jan 02 PHP
Laravel框架路由配置总结、设置技巧大全
Sep 03 PHP
php命令行用法入门实例教程
Oct 27 PHP
php微信高级接口群发 多客服
Jun 23 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
php curl中gzip的压缩性能测试实例分析
Nov 08 PHP
php json_encode与json_decode详解及实例
Dec 13 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
ThinkPHP防止重复提交表单的方法实例分析
May 10 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
Dec 05 PHP
apache集成php7.3.5的详细步骤
Jun 20 PHP
php中的钩子理解及应用实例分析
Aug 30 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
PHP6 mysql连接方式说明
2009/02/09 PHP
PHP 编写的 25个游戏脚本
2009/05/11 PHP
一个典型的PHP分页实例代码分享
2011/07/28 PHP
ajax取消挂起请求的处理方法
2013/03/18 PHP
Yii框架登录流程分析
2014/12/03 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
JavaScript面象对象设计
2008/04/28 Javascript
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
JQuery为textarea添加maxlength属性的代码
2010/04/07 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
ExtJS4给Combobox设置列表中的默认值示例
2014/05/02 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
2020/08/18 Javascript
Python正确重载运算符的方法示例详解
2017/08/27 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
浅析NumPy 切片和索引
2020/09/02 Python
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
一份婚庆公司创业计划书
2014/01/11 职场文书
小学生安全保证书
2014/02/01 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
受伤赔偿协议书
2014/09/24 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
市场营销计划书
2015/01/17 职场文书
python实现MD5进行文件去重的示例代码
2021/07/09 Python
Windows server 2012搭建FTP服务器
2022/04/29 Servers
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python