__unset 删除非公有属性,在外部调用unset时发生,  __isset用来检测对象属性是否设置值

<?php
class coach
{
protected $chairfit = "徐晓冬";
protected $lover = "丁大锅";
public function __construct()
{
echo "欢迎来到~必图拳馆训练~";
}
public function __get($chairfit)
{
return $this->$chairfit;
}
public function __set($name,$value)
{
$this->$name=$value;
}
}
class cj extends coach
{
public $expertin = ['散打','泰拳','巴西柔术'];
}
$cj = new cj();
var_dump($cj);
$cj->lover='陈培昌';
var_dump(isset($cj->lover)) ;
?>

以为这样就能检测非公有属性是否设置?deeply sorry about that!

输出结果:

欢迎来到~必图拳馆训练~
bool(false)

正确姿势

<?php
class coach
{
protected $chairfit = "徐晓冬";
protected $lover = "丁大锅";
public function __construct()
{
echo "欢迎来到~必图拳馆训练~"."\n";
}
public function __get($chairfit)
{
return $this->$chairfit;
}
public function __set($name,$value)
{
$this->$name=$value;
}
   #加上这段
public function __isset($name)
{
return isset($name);
}
}
class cj extends coach
{
public $expertin = ['散打','泰拳','巴西柔术'];
}
$cj = new cj();
//var_dump($cj);
$cj->lover='陈培昌';
var_dump(isset($cj->lover)) ;
?>

输出结果:

欢迎来到~必图拳馆训练~
bool(true)

<?php
class coach
{
protected $chairfit = "徐晓冬";
private $lover;
public function __construct()
{
echo "欢迎来到~必图拳馆训练~"."\n";
}
public function __get($chairfit)
{
return $this->$chairfit;
}
public function __set($name,$value)
{
$this->$name=$value;
}
public function __isset($name)
{
return isset($name);
}
public function __unset($name)
{
unset($this->$name);
}
}
class cj extends coach
{
public $expertin = ['散打','泰拳','巴西柔术'];
}
$cj = new coach();
//var_dump($cj);
$cj->lover='陈培昌';
var_dump($cj);
unset($cj->lover);
var_dump($cj); ?>

unset cj对象的lover属性之前,打印对象结果为:

object(coach)#1 (2) {
["chairfit":protected]=>
string(9) "徐晓冬"
["lover":"coach":private]=>
string(9) "陈培昌"
}

删除之后打印对象结果

object(coach)#1 (1) {
["chairfit":protected]=>
string(9) "徐晓冬"
}

php类相关知识---__unset和__isset的更多相关文章

  1. String 类相关知识

    1.常用方法 1)判断字符串是否为空 public boolean isEmpty()2)获取字符串长度 public int length()3)截取子子串 public String substr ...

  2. Java _类 相关知识

    成员变量 java对象的属性就是成员变量,其实成员变量就是指普通的变量,可以设置初始值,也可以不设置.当不设置时,会被设置为默认值.(当成员变量前面有private关键词时,说明定义了一个私有成员) ...

  3. php类相关知识----类常量,静态变量

    类常量 <?php class myuser { ;//定义的常量不带$符号,常量之前没有访问修饰符,常量之前没有修饰符号 public function monolog() { echo &q ...

  4. Java String类相关知识梳理(含字符串常量池(String Pool)知识)

    目录 1. String类是什么 1.1 定义 1.2 类结构 1.3 所在的包 2. String类的底层数据结构 3. 关于 intern() 方法(重点) 3.1 作用 3.2 字符串常量池(S ...

  5. php类相关知识----抽象类

    <?php //抽象类存在的目的是被继承,而不是用来被实现 abstract class wenwajiao { //抽象类中一定要有抽象方法,而且一定要被实现 abstract public ...

  6. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  7. 04StringBuffer相关知识、Arrays类、类型互换、正则、Date相关

    04StringBuffer相关知识.Arrays类.类型互换.正则.Date相关-2018.7.12 1.StringBuffer A:StringBuffer的构造方法: public Strin ...

  8. php有关类和对象的相关知识1

    有关类和对象的相关知识 类的自动加载 类的自动加载是指,在外面的页面中,并不需要去“引入”(包含)类文件,但是程序会在需要一个类的时候就自动去“动态加载”该类. 什么叫做“需要一个类”?通常是这样的情 ...

  9. 第7章 Python类型、类、协议 第7.1节 面向对象程序设计的相关知识

    Python被视为一种面向对象的语言,在介绍Python类相关的内容前,本节对面向对象程序设计相关的概念进行简单介绍. 一.    类和对象(实例) 在面向对象的程序设计(OOP)过程中有两个重要概念 ...

随机推荐

  1. xtrabackup备份失败(error writing file 'UNOPENED')

    xtrabackup备份失败 解决了,是因为limit open files值设置太小了 (3)修改资源限制参数 vi /etc/security/limits.conf nproc:用户创建进程数限 ...

  2. SqlException 服务器主体无法在当前安全上下文下访问数据库

    遇到一个错误如下 System.Data.SqlClient.SqlException  HResult=0x80131904  Message=服务器主体 "用户名" 无法在当前 ...

  3. linux yum 使用epel源

    由于CentOS6的系统安装了epel-release-latest-7.noarch.rpm 导致在使用yum命令时出现Error: xz compression not available问题. ...

  4. IDEA中便捷更新Git项目最新代码

    更新:IDEA中直接点击Gir后面的第一个图标 会出现一个这样的弹框,点击OK,就可以将GitLab中最新的代码更新到IDEA中(本地)

  5. K8s的kubectl常用命令

    一. 设置kubectl输入命令自动补全 依次执行一下命令: yum install -y bash-completion source /usr/share/bash-completion/bash ...

  6. django初步了解3

    目录 JsonResponse模块 form表单上传文件 FBV与CBV django settings源码分析及实际应用 模板语法 模板传值 模板过滤器 标签 if标签 for标签 with标签 自 ...

  7. centos7搭建docker并部署lnmp (转)

      1.首先呢先更新yum源 yum -y update 2.1.安装docker存储库 yum install -y yum-utils \ device-mapper-persistent-dat ...

  8. JavaMaven【七、插件使用】

    配置pom.xml 配置在那个周期的那个阶段执行该插件的功能 上图是配置了使用插件source3.0.1,该插件的功能是打包源码 并配置了在package阶段后执行打包源码的操作jar-no-fork ...

  9. 如何对Win10电脑文件夹选项进行设置?

    文件夹选项是Windows系统中非常重要的一个功能,在这里能对电脑内的文件及文件夹进行各种各样的设置以及操作.在Windows系统升级到Win10版本后,许多界面都发生了变化,文件夹选项也是如此,打开 ...

  10. 用Buildout来构建Python项目

    用Buildout来构建Python项目   什么是Buildout (Remixed by Matt Hamilton, original from http://xkcd.com/303) Bui ...