• php魔术方法


    魔术方法

    魔术方法

    是指某些情况下,会自动调用的方法,称为魔术方法。

    构造方法

    构造方法就是对象在实例化之后会自动调用的方法。

    语法:__construct()

    析构方法

    析构方法:对象被销毁的时候(销毁前),会自动调用的方法

    语法:__destruct()

    __clone()

    语法:变量 = clone 对象变量:

    克隆对象的时候,被克隆出来的对象会去调用的方法。

    class Human

    {

             public $name = '小明';

             protected $age = '18';

             private $money = 'xxx';

    }

    $p1 = new Human;

    $p2 = clone $p1;

    __get()

    获取的意思,当对象去访问一个不存在或者权限不够的属性的时候,会自动触发的方法

    @param                   string      $param            访问的属性名;

    function __get($param)

      {

            echo '你在访问'. $param .'属性值为:'. $this->$param .'<br>';

      }

     

    __set()

    设置一个是不存在或者权限不够的属性的时候,会自动触发的设置方法。

    @param          string                $param   设置的属性名;

    @param          string                $val                   性值;

    function __set($param,$val)

     {

          echo '你在设置属性',$param,'值为:',$val;

      }

    __isset()

    使用isset或者empty去判断一个权限不够或者不存在的对象属性的时候,会自动调用

    @param          string                $param   设置的属性名;

             function __isset($param)

             {

                       echo $param;

                       return true;

             }

    Q:isset($obj->xyz) 属性为真,能说明类声明了一个xyz属性吗?

    A:不能;

    __unset()

    当用unset销毁对象的不可见属性时,会引发 __unset();

             function __unset($param)

             {

                       echo '你想销毁我的',$param;

             }

            unset($p1->age);

            unset($p1->money);

    __call()

    当去访问一个权限不够或者不存在的方法的时候,会自动触发的魔术方法。

             function __call($key,$arr)

             {

                       echo $key,' ',var_dump($arr);

             }

    注意:所有的魔术方法都是为了增加类的容错处理以及对结构的控制(对象)

    __autoload()

    自动加载类的方法 ,放在类的外部,当需要使用某个文件下下的所有类时,只需要设置一个自动加载类的方法,就可以直接通过实例化类名的方式获得类的对象

    注意:1、路径问题

          2、类文件的命名规范  文件名必须是   类名.class.php

    魔术常量

    __CLASS__:代表当前类名,只能类的内部使用

    __FUNCTION__:代表当前方法名,只能类的内部使用

  • 相关阅读:
    也谈谈关于WEB的感想
    spring boot,https,双向ssl认证
    Spring Cloud Gateway(二)
    Spring Cloud Gateway(一)
    .Net Web Service 自定义返回值命名
    随便记一下,C#并行环境操作Winform的代码段
    随便记一下,解决Windows Server 2012无法远程登录的方法
    记录C#控件DataGridView绑定BindingList无法排序问题(转)
    记录SQL Server 2019链接Oracle 11g R2的过程
    Json CPP 中文支持与入门示例
  • 原文地址:https://www.cnblogs.com/bkhdd/p/9306995.html
Copyright © 2020-2023  润新知