php面向对象之__isset和__unset

一、简介

php面向对象之__isset和__unset_微信

__isset和__unset都是对不可访问属性的操作,前者是检验的时候自动调用,后者是销毁的时候自动调用。

比如说在类外访问private的时候就会出现不可访问属性。

 

二、代码



1 <?php
2 /*
3 * __isset:当外部调用isset()函数检测不可访问的属性或者不存在的属性时自动调用
4 __unset:当在类外部调用unset销毁不可访问属性时自动调用
5 * */
6 class Person{
7 private $userName;
8 private $age;
9 public $abc;
10 public function __construct($userName,$age){
11 $this->userName = $userName;
12 $this->age = $age;
13 }
14 public function __isset($name){
15 echo '当外部调用isset()函数检测不可访问的属性或者不存在的属性时自动调用';
16 return isset($name);
17 }
18 public function __unset($name){
19 echo '当在类外部调用unset销毁不可访问属性时自动调用';
20 unset($name);
21 }
22 }
23 $p = new Person('Clive',15);
24 var_dump(isset($p->abc));
25 echo '<hr/>';
26 unset($p->abc);


php面向对象之__isset和__unset_外部调用_02

 调用public属性,也就是可访问属性的时候,__isset和__unset都不会被访问到。