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

看这个方法之前呢,我们也先来看一下 unset() 函数,unset()这个函数的作用是删除指定的变量且传回true,参数为要删除的变量。

那么如果在一个对象外部去删除对象内部的成员属性用unset()函数可以吗?

这里自然也是分两种情况:

1、 如果一个对象里面的成员属性是公有的,就可以使用这个函数在对象外面删除对象的公有属性。

2、 如果对象的成员属性是私有的,我使用这个函数就没有权限去删除。

虽然有以上两种情况,但我想说的是同样如果你在一个对象里面加上__unset()这个方法,就可以在对象的外部去删除对象的私有成员属性了。在对象里面加上了__unset()这个方法之后,在对象外部使用“unset()”函数删除对象内部的私有成员属性时,对象会自动调用__unset()函数来帮我们删除对象内部的私有成员属性。

请看如下代码:<?php

class Person

{

public $sex;

private $name;

private $age;

public function __construct($name="", $age=25, $sex='男')

{

$this->name = $name;

$this->age = $age;

$this->sex = $sex;

}

/**

* @param $content

*

* @return bool

*/

public function __unset($content) {

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

echo isset($this->$content);

}

}

$person = new Person("小明", 25); // 初始赋值

unset($person->sex);

unset($person->name);

unset($person->age);

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

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

1

php unset方法,PHP中__unset()方法详解相关推荐

  1. android调webview的方法,Android中的WebView详解

    Android中的WebView详解 WebView详解 基本用法 布局文件配置WebView android:id="@+id/wv_news_detail" android:l ...

  2. java8 方法引用详解_Java8中如何通过方法引用获取属性名详解

    前言 在我们开发过程中常常有一个需求,就是要知道实体类中Getter方法对应的属性名称(Field Name),例如实体类属性到数据库字段的映射,我们常常是硬编码指定 属性名,这种硬编码有两个缺点. ...

  3. python中docx模块的使用_python使用docx模块读写docx文件的方法与docx模块常用方法详解...

    一,docx模块 Python可以利用python-docx模块处理word文档,处理方式是面向对象的.也就是说python-docx模块会把word文档,文档中的段落.文本.字体等都看做对象,对对象 ...

  4. Vue中 Vue.prototype 详解及使用——作用:避免和已被定义的数据、方法、计算属性产生冲突

    Vue中 Vue.prototype 详解及使用--作用:避免和已被定义的数据.方法.计算属性产生冲突 **应用场景:**在很多组件里用到数据/实用工具,但是不想污染全局作用域.这种情况下,可以通过在 ...

  5. hp打印机没有右键扫描_安装HP打印机报错 0x000006be解决方法,图文操作步骤详解...

    安装HP打印机报错 0x000006be解决方法,图文操作步骤详解 1. 首先打开控制面板 2.在程序和功能窗口中找是否有HP的打印机驱动,卸载掉 3.打开C:WindowsSystem32spool ...

  6. 计算机辅助药物设计的一般原理,朱瑞新着--_计算机辅助药物设计(Ⅰ)--基本方法原理概要与实践详解.pdf...

    文档介绍: 计算机辅助药物设计 ------ 基本方法原理概要与实践详解作者朱瑞新 2011 年 1 月目录序前言第一章"计算机辅助药物设计"与 M OE 概貌一.导言二.&quo ...

  7. 01.软件项目管理与敏捷方法——敏捷项目生命周期详解笔记

    01.软件项目管理与敏捷方法--敏捷项目生命周期详解笔记 00.与其说是船还不如说是熟练的航行技术保证了成功的航行.--George William Curtis 01.敏捷项目是一个按照敏捷宣言宗旨 ...

  8. 【Android语音合成TTS】百度语音接入方法,和使用技巧详解

    请尊重他人的劳动成果,转载请注明出处:[Android语音合成TTS]百度语音接入方法,和使用技巧详解 Ps. 依托于百度开放云,百度语音为合作伙伴提供了业界领先.永久免费的语音技术服务,目前已上线的 ...

  9. 三菱FX系列PLC模拟量输入AD模块的使用方法和相关编程设置详解

    三菱FX系列PLC模拟量输入AD模块的使用方法和相关编程设置详解 本次以FX3U系列PLC的模拟量输入模块FX3U-4AD进行举例说明:  该模块的部分技术数据如下图所示,  该模块的接线端子排列 ...

最新文章

  1. 强化学习常用算法+实际应用 ,必须get这些核心要点!
  2. java设计模式:Builder模式
  3. python的init函数里参数的作用
  4. hdu 5305 回溯+剪枝
  5. Python reload 函数 - Python零基础入门教程
  6. 背包——完全背包Warcraft III(哈理工1053)
  7. 阿里云服务器对外开放tomcat端口访问
  8. 分享一个好用的Python在线编辑器
  9. 第一次部署海康威视DEMO的一些坑,最终运行成功
  10. DOSBox指令全 汇编指令大全 debug
  11. CMSIS到底是个什么东西
  12. GitLab使用教程(详细)
  13. 人生中第一次在优品拍拍买二手手机的经历
  14. matlab imcrop 用法
  15. 如何快速的把m4a转换成mp3格式
  16. 找到多个名为spring_web的片段。这是不合法的相对排序。有关详细信息,请参阅Servlet规范的第8.2.2 2c节。考虑使用绝对排序。
  17. 煤炭传送带状态检测系统-python
  18. 市面上U盘便宜种类多 如何鉴别便宜U盘好坏呢
  19. hover在两种情况下的两种用法
  20. php2twig,php twig是什么意思

热门文章

  1. [iOS微博项目 - 2.6] - 获取微博数据
  2. MAC搭建kafka客户端以及实现生产消费
  3. Gavin老师Transformer直播课感悟 - 基于Transformer的Rasa Internals解密之全新一代可伸缩DAG图架构(四)
  4. 从Windows过渡到Mac需要注意的那些事儿!
  5. Ubuntu系统学习笔记(完整版)
  6. Parallels Desktop for Mac - PD18 虚拟机
  7. 注意!年底前没参加继续教育的会计,或将无法报名2023年会计考试!
  8. fedora 9下驱动摄像头采集图像手记
  9. 2021-2027全球及中国激光投影键盘行业研究及十四五规划分析报告
  10. 【Vapor】06 Chapter 8: Controllers