php面向对象(2)构造和析构函数

一、构造方法

  构造方法是类中一个“特殊”的方法,作用是在实例化一个对象的同时,给该对象的属性赋值,使之创建完成的时就具有其本身的特有属性

    • 该方法固定格式:[访问修饰符] function _construct(...) {代码块;}
    • 修饰符通常为public
    • 通常使用$this关键字来对属性进行赋值
    • 创建对象的时候自动调用

   示例:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<?php
    class Persion {
        private $name = "";
        private $age = 0;
        private $sex = "";

         function __construct($name, $age, $sex) {
            $this->name = $name;
            $this->age = $age;
            $this->sex = $sex;
        }

        public function self_introduction() {
            echo "我是".$this->name." 我今年".$this->age." 岁!<br />";
        }
    }

    $p1 = new Persion('张三', 30, "男");
    $p1->self_introduction();
    $p2 = new Persion("李四", 25, "男");
    $p2->self_introduction();

?>
</body>
</html>

  结果:

我是张三 我今年30 岁!
我是李四 我今年25 岁!

二、析构函数

  在“销毁对象”的时候自动调用,销毁情况:

    • unset(对面)
    • 没有变量指向该对象对应的内存地址
    • 程序结束

  说明:

    • 析构方法定义:public function _destruct() {...}//注意只能是public修饰,且不能有参数
    • 析构方法用于销毁对象时对对象中的一些资源进行清理--php有内置垃圾回收机制,一般不需要定义

  示例:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<?php
class P {
    private $name = "";
    function __construct($name) {
        $this->name = $name;
        echo "对象".$this->name."创建了<br />";
    }

    function __destruct() {
        echo "对象".$this->name."销毁了<br />";
    }
}

$p1 = new P("p1");
$p2 = new P("p2");

$p1 = new P("p3");
echo "没有变量指向<br />";
echo "<hr />";
echo "unset('p2')<br />";
unset($p2);
echo "<hr />";
echo "程序结束<br />";
?>
</body>
</html>

  结果:

对象p1创建了
对象p2创建了
对象p3创建了
对象p1销毁了
没有变量指向
unset('p2')
对象p2销毁了
程序结束
对象p3销毁了

 

posted on 2018-12-04 11:09  g2zh  阅读(241)  评论(0编辑  收藏  举报