PHP5 构造方法与析构方法

构造方法 与析构方法

大多数类都有一种称为构造函数的特殊方法。当创建一个对象 时,它将自动调用构造函数,也就是使用 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

析构函数:
    与构造函数相对的就是析构函数。析构函数是 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.“年龄 . $ 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
王五年龄40
李四年龄30
张三年龄20
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值