首页 > php教程 > php手册 > 正文

php (十二) 面向对象 构造方法与析构方法

php中文网
发布: 2016-06-21 08:48:42
原创
1334人浏览过

1. 构造方法

 

 大多数类都有一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方法。

 

 

构造函数的声明与其它操作的声明一样,只是其名称必须是__construct( )。这是PHP5中的变化,以前的版本中,构造函数的名称必须与类名相同,这种在PHP5中仍然可以用,但现在以经很少有人用了,这样做的好处是可以使构造函数独立于类名,当类名发生改变时不需要改相应的构造函数名称了。为了向下兼容,如果一个类中没有名为__construct( )的方法,PHP将搜索一个php4中的写

立即学习PHP免费学习笔记(深入)”;

 

法,与类名相同名的构造方法。

格式:function __construct ( [参数] ) { ... ... }

在一个类中只能声明一个构造方法,而是只有在每次创建对象的时候都会去调用一次构造方法,不能主动的调用这个方法,所以通常用它执行一些有用的初始化任务。比如对成属性在创建对象的时候赋初值。

 

 示例:

 

 

 

[php] view plaincopy

 

//创建一个人类  

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;  

}  

Symanto Text Insights
Symanto Text Insights

基于心理语言学分析的数据分析和用户洞察

Symanto Text Insights 84
查看详情 Symanto Text Insights

//这个人的说话方法  

function say()  

{  

echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."
";  

}  

}  

//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄  

$p1=new Person(“张3”,”男”, 22);  

$p2=new Person(“李4”,”女”, 33);  

$p3=new Person(“王5”,”男”, 44);  

//下面访问$p1对象中的说话方法  

$p1->say();  

//下面访问$p2对象中的说话方法  

$p2->say();  

//下面访问$p3对象中的说话方法  

$p3->say();  

?>  

 

 

输出结果为:

我的名子叫:张3性别:男我的年龄是:22

我的名子叫:李4性别:女我的年龄是:33

我的名子叫:王5性别:男我的年龄是:44

 

2.析构函数:

    与构造函数相对的就是析构函数。析构函数是PHP5新添加的内容,在PHP4中没有析构函数。析构函数允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件,释放结果集等,析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行,也就是对象在内存中被销毁前调用析构函数。与构造函数的名称类似,一个类的析构函数名称必须是__destruct( )。析构函数不能带有任何参数。

 格式:function __destruct ( ) { ... ... }

 

 示例:

 

 

<span style="color:#333333;"><?  
//创建一个人类  
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 &ldquo;再见&rdquo;.$this->name.&rdquo;<br>&rdquo;;  
   
}  
//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄  
$p1=new Person(&ldquo;张3&rdquo;,&rdquo;男&rdquo;, 22);  
$p2=new Person(&ldquo;李4&rdquo;,&rdquo;女&rdquo;, 33);  
$p3=new Person(&ldquo;王5&rdquo;,&rdquo;男&rdquo;, 44);  
//下面访问$p1对象中的说话方法  
$p1->say();  
//下面访问$p2对象中的说话方法  
$p2->say();  
//下面访问$p3对象中的说话方法  
$p3->say();  
?></span>  
登录后复制

 

 

输出结果为:

我的名子叫:张3性别:男我的年龄是:22

我的名子叫:李4性别:女我的年龄是:33

我的名子叫:王5性别:男我的年龄是:44

 

销毁张3

销毁李4

销毁王5

 

 

 



PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号