构造方法__construct()与析构方法__destruct()
2016-06-19 14:49
411 查看
大多数类都有一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方法。构 造函数的声明与其它操作的声明一样,只是其名称必须是__construct( )。这是PHP5中的变化,以前的版本中,构造函数的名称必须与类名相同,这种在PHP5中仍然可以用,但现在以经很少有人用了,这样做的好处是可以使构 造函数独立于类名,当类名发生改变时不需要改相应的构造函数名称了。为了向下兼容,如果一个类中没有名为__construct( )的方法,PHP将搜索一个php4中的写法,与类名相同名的构造方法。
格式:function __construct ( [参数] ) { ......}
在一个类中只能声明一个构造方法,而是只有在每次创建对象的时候都会去调用一次构造方法,不能主动的调用这个方法,所以通常用它执行一些有用的初始化任务。比如对成属性在创建对象的时候赋初值。
输出结果为:
我的名子叫:张三 性别:男 我的年龄是:20我的名子叫:李四 性别:女 我的年龄是:30我的名子叫:王五 性别:男 我的年龄是:40
如图:
析构函数:
与构造函数相对的就是析构函数。析构函数是PHP5新添加的内容,在PHP4中没有析构函数。 析构函数允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件, 释放结果集等,析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行,也就是对象在内存中被销毁前调用析构函数。与构造函数的名称类似, 一个类的析构函数名称必须是__destruct( )。析构函数不能带有任何参数。
格式:function __destruct ( ) { ......}
输出结果为:
我的名子叫:张三 性别:男 我的年龄是:20我的名子叫:李四 性别:女 我的年龄是:30我的名子叫:王五 性别:男 我的年龄是:40
再见王五
再见李四
再见张三
格式:function __construct ( [参数] ) { ......}
在一个类中只能声明一个构造方法,而是只有在每次创建对象的时候都会去调用一次构造方法,不能主动的调用这个方法,所以通常用它执行一些有用的初始化任务。比如对成属性在创建对象的时候赋初值。
01 | <? |
02 | // 创建一个人类 |
03 | class Person |
04 | { |
05 | // 下面是人的成员属性 |
06 | var $name ; // 人的名子 |
07 | var $sex ; // 人的性别 |
08 | var $age ; // 人的年龄 |
09 |
10 | // 定义一个构造方法参数为姓名$name、性别$sex和年龄$age |
11 | function __construct( $name , $sex , $age ) |
12 | { |
13 | // 通过构造方法传进来的$name给成员属性$this->name赋初使值 |
14 | $this ->name = $name ; |
15 |
16 | // 通过构造方法传进来的$sex给成员属性$this->sex赋初使值 |
17 | $this ->sex = $sex ; |
18 |
19 | // 通过构造方法传进来的$age给成员属性$this->age赋初使值 |
20 | $this ->age = $age ; |
21 | } |
22 |
23 | // 这个人的说话方法 |
24 | function say() |
25 | { |
26 | echo "我的名子叫:" . $this ->name " 性别:" . $this ->sex " 我的年龄是:" . $this ->age; |
27 | } |
28 | } |
29 |
30 | // 通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄 |
31 | $p1 = new Person( "张三" , "男" , 20); |
32 | $p2 = new Person( "李四" , "女" , 30); |
33 | $p3 = new Person( "王五" , "男" , 40); |
34 |
35 | // 下面访问$p1对象中的说话方法 |
36 | $p1 ->say(); |
37 |
38 | // 下面访问$p2对象中的说话方法 |
39 | $p2 ->say(); |
40 |
41 | // 下面访问$p3对象中的说话方法 |
42 | $p3 ->say(); |
43 | ?> |
我的名子叫:张三 性别:男 我的年龄是:20我的名子叫:李四 性别:女 我的年龄是:30我的名子叫:王五 性别:男 我的年龄是:40
如图:
析构函数:
与构造函数相对的就是析构函数。析构函数是PHP5新添加的内容,在PHP4中没有析构函数。 析构函数允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件, 释放结果集等,析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行,也就是对象在内存中被销毁前调用析构函数。与构造函数的名称类似, 一个类的析构函数名称必须是__destruct( )。析构函数不能带有任何参数。
格式:function __destruct ( ) { ......}
01 | <? |
02 | // 创建一个人类 |
03 | class Person |
04 | { |
05 | // 下面是人的成员属性 |
06 | var $name ; // 人的名子 |
07 | var $sex ; // 人的性别 |
08 | var $age ; // 人的年龄 |
09 |
10 | // 定义一个构造方法参数为姓名$name、性别$sex和年龄$age |
11 | function __construct( $name , $sex , $age ) |
12 | { |
13 | // 通过构造方法传进来的$name给成员属性$this->name赋初使值 |
14 | $this ->name = $name ; |
15 |
16 | // 通过构造方法传进来的$sex给成员属性$this->sex赋初使值 |
17 | $this ->sex = $sex ; |
18 |
19 | // 通过构造方法传进来的$age给成员属性$this->age赋初使值 |
20 | $this ->age = $age ; |
21 | } |
22 |
23 | // 这个人的说话方法 |
24 | function say() |
25 | { |
26 | echo "我的名子叫:" . $this ->name " 性别:" . $this ->sex " 我的年龄是:" . $this ->age; |
27 | } |
28 |
29 | // 这是一个析构函数,在对象销毁前调用 |
30 | function __destruct() |
31 | { |
32 | echo "再见" . $this ->name; |
33 | } |
34 | } |
35 |
36 | // 通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄 |
37 | $p1 = new Person( "张三" , "男" , 20); |
38 | $p2 = new Person( "李四" , "女" , 30); |
39 | $p3 = new Person( "王五" , "男" , 40); |
40 |
41 | // 下面访问$p1对象中的说话方法 |
42 | $p1 ->say(); |
43 |
44 | // 下面访问$p2对象中的说话方法 |
45 | $p2 ->say(); |
46 |
47 | // 下面访问$p3对象中的说话方法 |
48 | $p3 ->say(); |
49 | ?> |
我的名子叫:张三 性别:男 我的年龄是:20我的名子叫:李四 性别:女 我的年龄是:30我的名子叫:王五 性别:男 我的年龄是:40
再见王五
再见李四
再见张三
相关文章推荐
- MyEclipse添加Maven插件
- 翻转课堂心得
- 字符串当引号遇到美元
- QT自绘标题和边框
- 6-1认识CSS样式
- 《HTML5移动开发指南》——笔记4(离线应用)
- Jimoshi_用easyui做Struts2+Hibenate4学生实体类(Student)的增删改
- 广度优先搜索-抓住那头牛(算法基础 第8周)
- 特殊的引用”$this“的使用
- winform chart 控件之滚动条的放大与缩小功能
- 流程控制的使用CASE 语句用法
- 2016.6.19——C++杂记
- mysql 字符集设置
- 课程总结
- android你可能要用到的自定义View分享
- 离线保存浏览器网页
- Spring缓存注解@Cache,@CachePut , @CacheEvict,@CacheConfig使用
- Android新特性之CardView的简单使用
- lucene中模糊搜索的应用场景
- Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'