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

发布时间:2021-10-26 09:37:04 作者:iii
来源:亿速云 阅读:104

这篇文章主要讲解了“如何快速了解PHP中的魔术方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何快速了解PHP中的魔术方法”吧!

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

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

PHP魔术方法

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

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

__set()方法

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

语法格式如下:

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

实例如下:

<?php
    class father{
        public $study1;
        private $study2;
        public function __set($key, $value){
            echo '为“'.$key.'”赋值“'.$value.'”失败!<br>';
        }
    }
    $object          = new father();
    $object -> study1  = '好好学习';
    $object -> study2   = '天天向上';
    $object -> study3 = '福如东海';
?>

输出结果:

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

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

__get()方法

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

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

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

<?php
    class father{
        public $study = '好好学习';
        private $study1 = '天天向上';
        public function __get($study1){
            echo '获取:“'.$study1.'”失败!';
        }
    }
    $object = new father();
    echo $object -> study.'<br>';
    echo $object -> study1.'<br>';
    echo $object -> study2.'<br>';
?>

输出结果:

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

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

__isset() 方法

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

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

其中我们需要注意的是:

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

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

<?php
    class father{
        public $study = '好好学习';
        private $name = '天天向上';
        public function __isset($name){
            if(property_exists('Website', $name)){
                echo '成员属性:“'.$name.'”存在!<br>';
            }else{
                echo '成员属性:“'.$name.'”不存在!<br>';
            }
        }
    }
    $object = new father();
    isset($object -> mother);
    isset($object -> name);
?>

输出结果:

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

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

 property_exists($class_name,$property_name)

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

__unset() 方法

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

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

其中我们需要注意的是:

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

<?php
    class father{
        public $name = 'http://c.biancheng.net/php/';
        private $study = 'C语言中文网';
        public function __unset($study){
            if(property_exists('father', $study)){
                unset($this->$study);
                echo '移除成员属性:“'.$study.'”成功!<br>';
            }else{
                echo '成员属性:“'.$study.'”不存在!<br>';
            }
        }
    }
    $object = new father();
    unset($object->name);
    unset($object->study);
    unset($object->study1);
?>

输出结果:

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

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

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

感谢各位的阅读,以上就是“如何快速了解PHP中的魔术方法”的内容了,经过本文的学习后,相信大家对如何快速了解PHP中的魔术方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. 快速了解Node中的Stream流是什么
  2. 快速了解Java中ThreadLocal类

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php

上一篇:Windows 10新功能怎么提前体验

下一篇:JavaScript嵌入网页中的方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》