PHP魔术方法__ISSET、__UNSET使用实例

作者:junjie 时间:2024-05-22 10:09:08 

__isset()  – 在对类中属性或者非类中属性使用isset()方法的时候如果没有或者非公有属性,则自动执行__isset()的方法

__unset()- 在对类中属性或者非类中属性使用unset()方法的时候如果没有或者非公有属性,则自动执行__unset()的方法


<?php
    /**
     * 针对类中的魔术方法 __isset() 和 __unset() 的例子
     */

class Example {
    public $public;
    protected $protected;
    private $private;
   
    public function __construct(){
        $this->public = 'pub';
        $this->protected = 'pro';
        $this->private = 'pri';
    }
   
    public function __isset($var){
        echo '这里通过__isset()方法查看属性名为 '.$var."\n";
    }
   
    public function __unset($var){
        echo '这里通过__unset()方法要销毁属性名为 '.$var."\n";
    }
}

$exa = new Example;

echo '<pre>';
var_dump(isset($exa->public));
echo "\n";
var_dump(isset($exa->protected));
echo "\n";
var_dump(isset($exa->private));
echo "\n";
var_dump(isset($exa->noVar));
echo "\n";
echo '<hr/>';


unset($exa->public);
var_dump($exa);

echo "\n";
unset($exa->protected);
echo "\n";
unset($exa->private);
echo "\n";
unset($exa->noVar);
echo "\n";

结果如下:

bool(true)

这里通过__isset()方法查看属性名为 protected

bool(false)

这里通过__isset()方法查看属性名为 private

bool(false)

这里通过__isset()方法查看属性名为 noVar

bool(false)


object(Example)#1 (2) {
  ["protected:protected"]=>
  string(3) "pro"
  ["private:private"]=>
  string(3) "pri"
}

这里通过__unset()方法要销毁属性名为 protected

这里通过__unset()方法要销毁属性名为 private

这里通过__unset()方法要销毁属性名为 noVar

标签:PHP,魔术方法,ISSET,UNSET
0
投稿

猜你喜欢

  • 使用pyqt5 实现ComboBox的鼠标点击触发事件

    2022-01-12 17:24:57
  • JavaScript设置获取和设置属性的方法

    2024-05-22 10:35:34
  • MySQL优化之数据表的处理

    2008-12-22 14:45:00
  • 5行Python代码实现电脑永不息屏

    2023-04-04 01:26:37
  • asp单主键高效通用分页存储过程

    2009-02-23 19:21:00
  • Python验证码识别的方法

    2023-05-30 10:22:39
  • Python中SOAP项目的介绍及其在web开发中的应用

    2022-09-15 15:36:45
  • pytorch下tensorboard的使用程序示例

    2021-10-27 01:01:16
  • 不要跳转或刷新 实现网页区域选择显示

    2010-07-02 16:25:00
  • Python爬取数据并实现可视化代码解析

    2023-08-27 07:33:02
  • pandas:get_dummies()与pd.factorize()的用法及区别说明

    2023-07-10 22:17:32
  • python使用自定义钉钉机器人的示例代码

    2021-10-21 12:08:02
  • Pandas实现数据拼接的操作方法详解

    2023-08-16 02:45:40
  • 一种有创意的CSS命名规则

    2008-06-15 15:18:00
  • mysql数据库修改数据表引擎的方法

    2024-01-14 13:55:51
  • vue3.0如何在全局挂载对象和方法

    2024-05-13 09:07:59
  • python-opencv 将连续图片写成视频格式的方法

    2023-08-25 23:00:06
  • SQLServer2008存储过程实现数据插入与更新

    2024-01-19 06:01:21
  • Python2/3中urllib库的一些常见用法

    2023-11-05 00:24:04
  • PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解

    2023-10-15 01:41:57
  • asp之家 网络编程 m.aspxhome.com