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

yipeiwu_com6年前Python基础

__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

相关文章

Django 开发环境与生产环境的区分详解

Django 开发环境与生产环境的设置 在常规的Django工程开发中,我们经常会遇到一类问题,即:本地开发环境跟远程服务器生产环境配置不一样。对于这些不同之处,以前的做法是直接修改生...

布同自制Python函数帮助查询小工具

比如在学习list、tuple、dict、str、os、sys等模组的时候,利用Python的自带文档可以很快速的全面的学到那些处理的函数。所以这个自带文档功能能够给出学者带来很大的方便...

python实现将英文单词表示的数字转换成阿拉伯数字的方法

本文实例讲述了python实现将英文单词表示的数字转换成阿拉伯数字的方法。分享给大家供大家参考。具体实现方法如下: import re _known = { 'zero': 0,...

Python完成哈夫曼树编码过程及原理详解

Python完成哈夫曼树编码过程及原理详解

哈夫曼树原理 秉着能不写就不写的理念,关于哈夫曼树的原理及其构建,还是贴一篇博客吧。 /post/97396.htm 其大概流程 哈夫曼编码代码 # 树节点类构建 class Tr...

python dataframe常见操作方法:实现取行、列、切片、统计特征值

实例如下所示: # -*- coding: utf-8 -*- import numpy as np import pandas as pd from pandas import *...