PHP魔术方法

PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用。这里进行详细介绍,感兴趣的小伙伴们可以参考一下。

(好想插入一首音乐)

特征:

1. __两个下划线开始

2. 不需要显示的调用,由某些条件下触发(类似数据库中的隐式触发器)

接下来我们开始正文喽

咳咳,排排坐好,知识点来了!!!

1. __construct( ) 构造函数

php中构造方法是对象创建完成后第一个被对象自动调用的方法。在每个类中都有一个构造方法,如果没有显示地声明它,那么类中都会默认存在一个没有参数且内容为空的构造方法。

通常构造方法被用来执行一些有用的初始化任务,如对成员属性在创建对象时赋予初始值。

例子:

$Person3 = new Person("李四","男",25);

echo $Person3->say(); //输出:我叫:李四,性别:男,年龄:25

2. __destruct( ) 析构函数

通过上面的讲解,现在我们已经知道了什么叫构造方法。那么与构造方法对应的就是析构方法。析构方法允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件、释放结果集等。

析造方法的声明格式与构造方法 __construct() 比较类似,也是以两个下划线开始的方法 __destruct() ,这种析构方法名称也是固定的。一般来说,析构方法在PHP中并不是很常用,它属类中可选择的一部分,通常用来完成一些在对象销毁前的清理任务。

例子:

我觉得我还可以再抢救一下,我的名字叫小明

3. __get( ) 获得一个类的成员变量时调用

在 php 面向对象编程中,类的成员属性被设定为 private 后,如果我们试图在外面调用它则会出现“不能访问某个私有属性”的错误。那么为了解决这个问题,我们可以使用魔术方法 __get()。

在程序运行过程中,在类外部获取 访问类中私有 受保护的属性的时候才会被调用

例子:

姓名:小明

年龄:50

4. __set( ) 设置一个类的成员变量时调用

__set( $property, $value )` 方法用来设置私有属性, 给一个未定义的属性赋值时,此方法会被触发,传递的参数是被设置的属性名和值。

例子:

我叫小红,今年16岁了

5. __isset( ) 当对不可访问属性调用isset( )

在看这个方法之前我们看一下isset()函数的应用,isset()是测定变量是否设定用的函数,传入一个变量作为参数,如果传入的变量存在则传回true,否则传回false。

在类外 用isset方法来判断类中私有/受保护的属性存在时候

例子:

1 // public 可以 isset() 当在类外部使用isset()函数测定私有成员name时,自动调用 // __isset() 内 第一个echo 1 // __isset() 第二个echo 在类外部使用isset()函数测定私有成员age时,自动调用 // __isset() 内 第一个echo 1 // __isset() 内第二个echo

6. __unset( ) 当对不可访问属性调用unset( )时被调用

看这个方法之前呢,我们也先来看一下 unset() 函数,unset()这个函数的作用是删除指定的变量且传回true,参数为要删除的变量。在类外对类中的私有/受保护的属性销毁的时候 会自动执行__unset 魔术方法

例子:

当在类外部使用unset()函数来删除私有成员时自动调用的

你们有没有学会呀!
                             大家点点关注和喜欢好不好;
我不管,我要关注
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、__get、__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的 __get( $propert...
    丁叔i阅读 2,890评论 0 0
  • 0x00 引言 今日去面试,被面试官突然问了一句,php的魔术方法。一脸懵逼,没明白是啥。后来在回来的路上才想起,...
    一口咖啡一口茶阅读 4,692评论 0 3
  • 魔术方法(Magic methods) PHP中把以两个下划线__开头的方法称为魔术方法,这些方法在PHP中充当了...
    軍_阅读 2,900评论 0 3
  • 概念 PHP中把以两个下划线__开头的方法称为魔术方法,这些方法在PHP中充当了举足轻重的作用。 常见的方法 __...
    NoFacePeace阅读 1,630评论 0 0
  • 总的来说, 有下面几个魔术函数__construct() __destruct() __get() __set(...
    _Henry_阅读 1,351评论 0 0

友情链接更多精彩内容