• 02--学习PHP面向对象--构建函数和析构函数


    构建函数

    对象的赋值操作

    <?php
    class Human{
        //类的属性
        public $name;
        public $age;
        //类的方法
        public function sayName(){
            echo $this->name;
        }
    }
    //例化一个对象
    $man = new Human();
    $man->age = 20;
    $man->name = 'Tom';
    var_dump($man); //object(Human)#1 (2) { ["name"]=> string(3) "Tom" ["age"]=> int(20) }

    ---------------分割线--------------分割线--------------

    通过上面的方式可以为对象的属性赋值,适合单个对象,如何在创建对象是自动为其赋值?

    可以通过PHP的魔术方法(详细介绍--https://segmentfault.com/a/1190000007250604) function __construtct() 实现

    __construtct会在创建对象时自动调通该函数,

    <?php
    class Human{
        //类的属性
        public $name;
        public $age;
        //类的方法
    
        public function __construct($name,$age)
        {
            echo '我是构造函数';
            $this->name = $name;
            $this->age = $age;
        }
    
        public function sayName(){
            echo $this->name;
        }
    }
    //例化一个对象
    $man = new Human('Tom',20);
    $man->sayName();  //我是构造函数Tom

    在没有手动调用构造函数的情况下,我们自动为创造的对象赋值了;

    构造函数通常用于初始化对象的属性值
     
    ---------------分割线--------------分割线--------------
     
    析构函数同样是系统自动调用,当对象被释放时会自动调用该方法(对象的垂死挣扎)
    <?php
    class Human{
        //类的属性
        public $name;
        public $age;
        //类的方法
    
        public function __construct($name,$age)
        {
            $this->name = $name;
            $this->age = $age;
        }
    
        function __destruct() {
            echo __FUNCTION__,'<br/>';
        }
    
        public function sayName(){
            echo $this->name;
        }
    }
    //例化一个对象
    $manA = new Human('Tom',20);
    $manB = new Human('TomA',20);
    echo '手动释放<br/>';
    unset($manA);
    echo '脚本结束<br/>';
    
    //运行结果
    //手动释放 //__destruct //脚本结束 //__destruct

    因此在脚本结束时,系统会回收脚本所占资源,析构函数就会被调用

    析构函数并不常用,但是可以析构方法允许在销毁一个对象之前执行的一些操作或完成一些功能(我们在这里就是echo一下)

     
  • 相关阅读:
    谈执着
    SQL表自连接用法
    Mysql group by 排序问题
    php自动生成mysql的触发代码。
    XSS CSRF 攻击
    [微信开发利器]微信内移动前端开发抓包调试工具fiddler使用教程
    微信JS-SDK]微信公众号JS开发之卡券领取功能详解
    优化与重构的思考
    c语言 13
    c语言 13
  • 原文地址:https://www.cnblogs.com/carefulyu/p/12677420.html
Copyright © 2020-2023  润新知