2019-07-23 php魔术方法

2019-07-23 08:43:48来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

本文对一些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.

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


原文链接:https://www.cnblogs.com/zhangxu-fasu/p/11230535.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:微信支付H5支付开发文档

下一篇:php5.6 上传图片error代码为6 或者 报错“PHP Warning: File upl