zoukankan      html  css  js  c++  java
  • 2019-07-23 php魔术方法

    本文对一些php中的魔术方法进行总结,魔术方法顾名思义就是具备神奇功能的方法(function)。魔术方法通常在某些特定情况下自动触发,不能用实例化变量名->方法名()来主动触发。不同的魔术方法有不同的触发情况,魔术方法都以”__”两个下划线开头,一定要注意是“两个下划线”,如果写成一个下划线,不报错,但也不会被触发。

    1.构造方法   __construct(参数){ }

    该魔术方法,在实例化类时自动触发,不能主动触发。一般用于执行某些初始化任务,在一个类中,只能声明一个构造方法,下面我们用构造方法赋初始值。

    class Person{
        var $name;
        var $age;
        var $sex;
        //构造方法
        function __construct($name,$age,$sex)
        {
            //赋值
            $this->name = $name;
            $this->age = $age;
            $this->sex = $sex;
        }
    
        function say()
        {
            echo "My name is ".$this->name.". I am ".$this->age." years old.".$this->sex." in sex.";
        }
    }
    
    //在实例化时传入参数 执行构造方法
    $obj = new Person("ZhangSan","20","male");
    
    //再调用say()方法
    $obj->say();

    最后的输出结果是:My name is ZhangSan. I am 20 years old.male in sex.

    从上面的例子可以看出,构造方法在类被实例化时主动触发,并可以传入参数。

    以下几种情况适合放在构造方法内:

    ①数据库类

    使用数据库之前,必须先连接数据库。我们可以将连接数据库的代码放在构造方法里。

    ②分页类

    每次计算分页之前,必须获取当前页数、计算总页数,就可以放在构造方法里。

    ③上传类

    必须先获取上传的文件 $file = $_FILES['form_name'],它就可以放在构造方法里。

    ④绘图类

    必须先创造一个画板,这个过程也可以放在构造方法。

    2.析构方法   __destruct( ){ }

    析构函数允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件, 释放结果集等,析构函数会在到某个对象的所有引用都被删除或者当对象被显示销毁时执行,也就是对象在内存中被销毁前调用析构函数。与构造函数的名称类似, 一个类的析构函数名称必须是__destruct( )。析构函数不能带有任何参数

    下面我们来看一下析构函数的具体应用:

    class Student{
    
        function say()
        {
            echo "I am a student. ";
        }
        //析构方法
        function __destruct()
        {
            echo "I am so happy.";
        }
    }
    
    //实例化类
    $obj_s = new Student();
    //调用say()方法
    $obj_s->say();

    最后的输出结果是:I am a student. I am so happy.

    可以看到,我们并没有主动去调用析构方法,但却输出了析构方法的结果。是因为在调用类方法结束后会自动释放内存。在释放内存前,主动触发了析构函数。

  • 相关阅读:
    关于找了很长时间但是找不到原因的bug的解决方法
    牛客_剑指offer题集——二叉树中和为某一值的路径(java实现)
    牛客_剑指offer题集——栈的压入弹出序列(java实现)
    牛客_剑指offer题集——顺时针打印算法(java实现)
    第 7 章 Selenium WebDriver 进阶应用 Selenium 3+Python 3 自动化测试
    第 6 章 Selenium 常用方法(二) Selenium 3+Python 3 自动化测试
    第 6 章 Selenium 常用方法(一) Selenium 3+Python 3 自动化测试
    5.2 Selenium 八大定位 Selenium 3+Python 3 自动化测试
    5.1 Python 基础知识 Selenium 3+Python 3 自动化测试
    第 4 章 前端技术简介 Selenium 3+Python 3 自动化测试
  • 原文地址:https://www.cnblogs.com/zhangxu-fasu/p/11230535.html
Copyright © 2011-2022 走看看