php中构造函数和析构函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
php中构造函数和析构函数
2010-03-05 14:49
学习学习了,从某好友处转载过来的
构造方法与析构方法
大多数类都有一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方法。
构造函数的声明与其它操作的声明一样,只是其名称必须是__construct( )。这是PHP5中的变化,以前的版本中,构造函数的名称必须与类名相同,这种在PHP5中仍然可以用,但现在以经很少有人用了,这样做的好处是可以使构造函数独立于类名,当类名发生改变时不需要改相应的构造函数名称了。为了向下兼容,如果一个类中没有名为__construct( )的方法,PHP将搜索一个php4中的写
法,与类名相同名的构造方法。
格式:function __construct ( [参数] ) { … … }
在一个类中只能声明一个构造方法,而是只有在每次创建对象的时候都会去调用一次构造方法,不能主动的调用这个方法,所以通常用它执行一些有用的初始化任务。比如对成属性在创建对象的时候赋初值。
//创建一个人类
01.class Person
02.{
03.//下面是人的成员属性
04.var $name; //人的名子
05.var $sex; //人的性别
06.var $age; //人的年龄
07.//定义一个构造方法参数为姓名$name、性别$sex和年龄$age
08.function __construct($name, $sex, $age)
09.{
10.//通过构造方法传进来的$name给成员属性$this->name赋初使值
11.$this->name=$name;
12.//通过构造方法传进来的$sex给成员属性$this->sex赋初使值
13.$this->sex=$sex;
14.//通过构造方法传进来的$age给成员属性$this->age赋初使值
15.$this->age=$age;
16.}
17.//这个人的说话方法
18.function say()
19.{
20.echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."
";
21.}
22.}
23.//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄
24.$p1=new Person("张三","男", 20);
25.$p2=new Person("李四","女", 30);
26.$p3=new Person("王五","男", 40);
27.//下面访问$p1对象中的说话方法
28.$p1->say();
29.//下面访问$p2对象中的说话方法
30.$p2->say();
31.//下面访问$p3对象中的说话方法
32.$p3->say();
33.
34.输出结果为:
35.我的名子叫:张三性别:男我的年龄是:20
36.我的名子叫:李四性别:女我的年龄是:30
我的名子叫:王五性别:男我的年龄是:40
析构函数:
与构造函数相对的就是析构函数。析构函数是PHP5新添加的内容,在PHP4中没有析构函数。析构函数允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件,释放结果集等,析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行,也就是对象在内存
中被销毁前调用析构函数。与构造函数的名称类似,一个类的析构函数名称必须是__destruct( )。析构函数不能带有任何参数。
格式:function __destruct ( ) { … … }
//创建一个人类
01.class Person
02.{
03.//下面是人的成员属性
04.var $name; //人的名子
05.var $sex; //人的性别
06.var $age; //人的年龄
07.//定义一个构造方法参数为姓名$name、性别$sex和年龄$age
08.function __construct($name, $sex, $age)
09.{
10.//通过构造方法传进来的$name给成员属性$this->name赋初使值
11.$this->name=$name;
12.//通过构造方法传进来的$sex给成员属性$this->sex赋初使值
13.$this->sex=$sex;
14.//通过构造方法传进来的$age给成员属性$this->age赋初使值
15.$this->age=$age;
16.}
17.//这个人的说话方法
18.function say()
19.{
20.echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."
";
21.}
22.//这是一个析构函数,在对象销毁前调用
23.function __destruct()
24.{
25.echo "再见".$this->name."
";
26.}
27.//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄
28.$p1=new Person("张三","男", 20);
29.$p2=new Person("李四","女", 30);
30.$p3=new Person("王五","男", 40);
31.//下面访问$p1对象中的说话方法
32.$p1->say();
33.//下面访问$p2对象中的说话方法
34.$p2->say();
35.//下面访问$p3对象中的说话方法
36.$p3->say();
输出结果为:
我的名子叫:张三性别:男我的年龄是:20
我的名子叫:李四性别:女我的年龄是:30
我的名子叫:王五性别:男我的年龄是:40
再见王五
再见李四
再见张三