博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php魔术方法
阅读量:4329 次
发布时间:2019-06-06

本文共 1306 字,大约阅读时间需要 4 分钟。

魔术方法

魔术方法

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

构造方法

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

语法:__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__:代表当前方法名,只能类的内部使用

 

转载于:https://www.cnblogs.com/bkhdd/p/9306995.html

你可能感兴趣的文章
关于jquery中prev()和next()的用法
查看>>
一、 kettle开发、上线常见问题以及防错规范步骤
查看>>
eclipse没有server选项
查看>>
CRC码计算及校验原理的最通俗诠释
查看>>
QTcpSocket的连续发送数据和连续接收数据
查看>>
使用Gitbook来编写你的Api文档
查看>>
jquery扩展 $.fn
查看>>
Markdown指南
查看>>
influxDB的安装和简单使用
查看>>
JPA框架学习
查看>>
JPA、JTA、XA相关索引
查看>>
机器分配
查看>>
php opcode缓存
查看>>
springcloud之Feign、ribbon设置超时时间和重试机制的总结
查看>>
Go 结构体
查看>>
LINQ巩固
查看>>
观看杨老师(杨旭)Asp.Net Core MVC入门教程记录
查看>>
UIDynamic(物理仿真)
查看>>
Windows下安装Redis
查看>>
迷宫实现
查看>>