• 技术文章 >php教程 >php手册

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

    2016-06-21 08:48:42原创542
    1. 构造方法

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

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

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

    格式: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;

    }

    //这个人的说话方法

    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 ( ) { ... ... }

    示例:

    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."
    "; } //这是一个析构函数,在对象销毁前调用 function __destruct() { echo “再见”.$this->name.”
    ”; } //通过构造方法创建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

    销毁张3

    销毁李4

    销毁王5



    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:nbsp rdquo this quot name
    上一篇:ThinkPHP中的pathinfo模式和URL重写 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • PHP5中Cookie与 Session使用详解• 第三节--定义一个类 -- Classes and Objects in PHP5 [3]• PHP feof() 函数读文件的使用• php利用新浪接口查询ip获取地理位置• PHPstorm中xdebug安装配置说明
    1/1

    PHP中文网