如何快速了解PHP中的魔术方法 您所在的位置:网站首页 iphone11有必要升级ios166吗 如何快速了解PHP中的魔术方法

如何快速了解PHP中的魔术方法

#如何快速了解PHP中的魔术方法| 来源: 网络整理| 查看: 265

 当前位置:首页 » 编程设计 » 正文 如何快速了解PHP中的魔术方法 2023年04月06日3freeliver54

如何快速了解PHP中的魔术方法

在我们之前的文章中,我们介绍__clone()方法的时候提到,这是魔术方法的一种,《带你分清类中的构造函数与析构函数》中也提到的构造函数与析构函数也叫作构造方法与析构方法,他们也是魔术方法的一种。那么什么是魔术方法?它有哪些常用的方法?它又是怎样使用的?接下来我们一起来看一看吧。

PHP魔术方法

在PHP面向对象编程中,PHP里有一系列的魔术方法,这些魔术方法看看之前学习的__clone\__construct\__destruct我们能发现一个共同点,那就是它们都是由__两个下划线开始的,并且都是在某种特定的条件下自动调用的。

那接下来我们来看一看一些常用的魔术方法,结合实例来看一下它们的使用方法。

__set()方法

__set()方法用于在为当前环境下未定义或不可见的类属性赋值时,需要注意的是所有的魔术方法,都是在某种特定条件下自动调用的,为当前环境下未定义或不可见的类属性赋值时就是__set()方法调用的特定条件。

语法格式如下:

public function __set(要操作的变量, 要操作变量的值){     ... ... ; }

实例如下:

输出结果:

如何快速了解PHP中的魔术方法

由上述实例看出,当当前环境下未定义或不可见的类属性赋值时,就会调用__set()方法。

__get()方法

自动调用 __get() 方法的特定条件是在调用或获取当前环境下未定义或不可见的类属性时,定义该方法的语法格式如下:

public function __get($name){     ... ... ; }

其中参数$name表示要操作的变量名称,下面通过实例我们来看一下__get()方法的使用,实例如下:

输出结果:

如何快速了解PHP中的魔术方法

由上述结果可以看出在调用或获取当前环境下未定义或不可见的类属性时,会自动调用 __get() 方法。

__isset() 方法

自动调用 __isset() 方法的特定条件是当在类外部对类中不可访问或不存在的属性使用 isset() 或 empty() 函数时,该方法的语法格式如下:

public function __isset($name){     ... ... ; }

其中我们需要注意的是:

参数 $name 为要访问的属性名称。

isset() 函数是用来检查一个变量是否存在并且还要判断不为 NULL,如果传入的变量存在则传回 true,不存在传回 false。

empty() 函数是用来检查一个变量是否为空,如果变量的值等于 FALSE,那么这个变量会被认为不存在。

如果想要使用 isset() 或 empty() 函数对类中的私有属性进行检测的话,我们只需要在类中添加一个 __isset() 方法就可以了,当在类外部使用 isset() 或 empty() 函数时,会自动调用类里面的 __isset() 方法。

接下来我们通过实例来看一下__isset()方法的使用,实例如下:

输出结果:

如何快速了解PHP中的魔术方法

其中我们需要注意的是,property_exists() 函数可以用来检测类中是否定义了该属性,语法格式为

 property_exists($class_name,$property_name)

其中 $class_name 为字符串形式的类名,即判断类 class_name 中是否定义了 property_name 属性。

__unset() 方法

自动调用__unset() 方法的特定条件是当在类外部对类中不可访问或不存在的属性使用 unset() 函数时,该方法的语法格式如下:

public function __unset($name){     ... ... ; }

其中我们需要注意的是:

参数 $name 为要访问的属性名称。

unset() 函数的作用是删除指定的变量,需要传入一个或多个变量作为参数,另外,该函数没有返回值。

可以使用 unset() 函数在类外部去删除类中的成员属性。如果要删除类中的公有属性的话直接使用 unset() 函数即可;

如果要删除类中的私有属性的话,则需要在类中添加一个 __unset() 方法。

接下来我们通过实例来看一下__unset()方法的使用,实例如下:

输出结果:

如何快速了解PHP中的魔术方法

由上述实例看出当在类外部对类中不可访问或不存在的属性使用 unset() 函数时,__unset() 方法会被自动调用。

上述实例中给大家介绍了一些常用的魔术方法,但这并不是魔术方法的全部,那接下来再给大家列举一些魔术方法:

__call()  --- 调用一个不存在的方法时自动调用

__sleep() ---  使用 serialize 序列化时自动调用

__toString() ---   把对象转换成字符串时自动调用

__invoke()  ---  当尝试把对象当方法调用时自动调用

__wakeup() ---  使用 unserialize 反序列化时自动调用

__callStatic()  ---  调用一个不存在的静态方法时自动调用

__debugInfo()  ---  使用 var_dump() 打印对象信息时自动调用

__set_state()  ---  当使用 var_export() 函数时自动调用,接受一个数组参数

本文参考链接:https://www.yisu.com/zixun/616580.html

上一篇: Win2000上如何安装PHP+MYSQL

PHP   文章来源:ITGUEST,欢迎分享,转载请保留出处  原文地址:https://www.itguest.com/post/bgfde2b2.html 阅读延展 php数组中的元素可不可以是变量php如何输出字符串php如何查询时间范围php各级工程师需要掌握的知识体系是什么php如何将单引号转成双引号怎么在PHP中使用接口编写优雅的代码PHP怎么从txt文件中读取数据php中的array_pad()函数如何使用php代码如何实现修改昵称php中serialize和unserialize怎么用如何使用php实现华氏温度转换摄氏温度php如何将日期转分隔符日期


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有