


Detailed explanation of PHP magic methods __iset, __unset (code example)
Objectives of this article:
1. Understand the definition of magic methods in PHP
2. Understand the usage scenarios of __isset() magic method
3. Master the usage of __isset() magic method
4. Understand the usage scenarios of __unset() magic method
5. Master the usage of __unset() magic method
(1) Understand the definition of magic methods in PHP
PHP Reserve all class methods starting with __ (two underscores) as magic methods. Therefore, when defining class methods, except for the above magic methods, it is recommended not to prefix them with __.
There is another name for these two magic methods, they can also be called Magic methods of attribute overloading
So so far we have learned 4 magic methods of attribute overloading, as well as the other two __get and __set
in the previous article(2)、Understand the usage scenarios of __isset() magic method
When we want to not report an error when in isset (non-existent attribute) or empty (non-existent attribute), we can define the __isset magic method in the class, and it will be automatically executed at this time
(3), Master the usage of __isset() magic method
# #Summary:
1. In PHP, __isset is defined in the class in the following format: public function __isset (parameter 1). Note here that there must be two __, it must be __isset, and it must be With 1 parameter, one more or less will not work2. When isset does not exist for an attribute, the system will automatically trigger the defined __isset method of the class where the object is located3. When empty() does not exist, the system will automatically trigger the defined __isset method of the class where the object is located.Each summary is derived through practice. Now we use practice to demonstrate the summary. , this can promote understanding and make each summary clearer and more intuitive
##Case 1,
Practical goal:
1. In PHP, __isset is defined in the class in the following format: public function __isset (parameter 1). Note here that there must be two __, which must be __isset, and must be brought 1 parameter, one more or less will not work
The specific code is as follows:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术方法 public function __isset($name){ echo "自动执行了Animal类中的__isset方法<br/>"; } } $ani = new Animal(); ?>
Blank , indicating that no error was reported
Now let’s try it without adding parameters
The specific code is as follows: <?php
class Animal{
public function eat(){
}
public function sleep(){
}
//魔术方法
public function __isset(){
echo "自动执行了Animal类中的__isset方法<br/>";
}
}
$ani = new Animal();
?>
The running results are as follows:
It can be seen that the __isset method has and can only have one parameter
Case 2,
Practice goals:
#1. When isset does not exist, the system will automatically trigger the object The defined __isset method of the class ##The specific code is as follows:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术方法 public function __isset($name){ echo "自动执行了Animal类中的__isset方法<br/>"; } } $ani = new Animal(); isset($ani->name); ?>
Automatically execute the __isset method in the Animal class
我们发现其实我们没有手动的去调用__isset方法,也就是说没有写成$ani->__isset(),但是这个方法依然执行了,因为什么呢?因为我们写了isset($ani->name);而这个name属性没有在类中定义,然后这个类中又定义了这个魔术方法,所以它就像魔术一样,突然就被自动执行了
这里一定要注意,是2个下划线,不是一个,否则就不是魔术方法了,下面还是再来做下测试
具体代码如下:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术方法 试着少写一个_ public function _isset($name){ echo "自动执行了Animal类中的__isset方法<br/>"; } } $ani = new Animal(); isset($ani->name); ?>
运行结果如下:
空白
说明刚刚那个__isset方法没有被自动执行了,所以一定要注意是2个下划线,就好像构造函数和析构函数一样,都是两个下划线
案例三、
实践目标:
1、当empty()不存在的属性时,系统会自动触发对象所在类的定义好的__isset方法
具体代码如下:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术方法 public function __isset($name){ echo "自动执行了Animal类中的__isset方法<br/>"; } } $ani = new Animal(); empty($ani->name); ?>
运行结果如下:
自动执行了Animal类中的__isset方法
由此可见,会自动触发类中定义好的__iset魔术方法的场景,除了在isset不存在的属性时,还在empty不存在的属性时
(四)、了解__unset()魔术方法的使用场景
当希望在unset()不存在的属性时可以自定义自己的逻辑,我们可以在类中定义__unset方法,此刻它会被自动执行,我们可以在里面写自定义逻辑
(五)、掌握__unset()魔术方法的用法
总结:
1、PHP中__unset在类中定义格式如下 public function __unset(参数1),这里注意必须是2个__,必须是__unset,而且必须是要带1个参数,多一个少一个都不行
2、当unset不存在的属性时,系统会自动触发对象所在类的定义好的__unset方法
每个总结都是通过实践得出来的,现在我们用实践来演示总结,这样可以促进理解,让每个总结理解起来更加清晰,直观
案例一、
实践目标:
1、PHP中__unset在类中定义格式如下 public function __unset(参数1),这里注意必须是2个__,必须是__unset,而且必须是要带1个参数,多一个少一个都不行
具体代码如下:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术方法 public function __unset($name){ echo "自动执行了Animal类中的__unset方法<br/>"; } } $ani = new Animal(); ?>
运行结果如下:
空白
说明没有报错,现在我们来试着不写参数看下
具体代码如下:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术方法 public function __unset(){ echo "自动执行了Animal类中的__unset方法<br/>"; } } $ani = new Animal(); ?>
运行结果为:
Fatal error: Method Animal::__unset() must take exactly 1 argument in D:\E-class\class-code\classing\index.php on line 11
由此可见,__unset魔术方法,参数有且只能有一个
案例二、
实践目标:
1、当unset不存在的属性时,系统会自动触发对象所在类的定义好的__unset方法
具体代码如下:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术方法 public function __unset($name){ echo "自动执行了Animal类中的__unset方法<br/>"; } } $ani = new Animal(); unset($ani->name); ?>
运行结果如下:
自动执行了Animal类中的__unset方法
我们发现其实我们没有手动的去调用__unset方法,也就是说没有写成$ani->__unset(),但是这个方法依然执行了,因为什么呢?因为我们写了unset($ani->name);而这个name属性没有在类中定义,然后这个类中又定义了这个魔术方法,所以它就像魔术一样,突然就被自动执行了
这里一定要注意,是2个下划线,不是一个,否则就不是魔术方法了,下面还是再来做下测试
具体代码如下:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术方法 试着少写一个_ public function _unset($name){ echo "自动执行了Animal类中的__unset方法<br/>"; } } $ani = new Animal(); unset($ani->name); ?>
运行结果如下:
空白
由此可见,__unset魔术方法没有被自动执行了,所以一定要记得__unset魔术方法也是2个下划线
(六)、总结
1、本文主要讲了__isset,__unset的使用场景,定义以及具体的实现方法
希望本文能给大家带来一定的帮助,谢谢!!!
The above is the detailed content of Detailed explanation of PHP magic methods __iset, __unset (code example). For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Python metaprogramming basics Python metaprogramming is the ability to dynamically manipulate Python code, which makes Python a very powerful language. Metaprogramming can be implemented in the following ways: Class decorator: A class decorator is a decorator that modifies the definition of a class. It can be used to add or modify the properties and methods of a class, and can also be used to control the instantiation process of a class. defadd_method_to_class(cls):defnew_method(self):print("Thisisanewmethod")setattr(cls,"new_method",new_method)returncls@a

The execution order of PHP magic methods follows the following rules: magic methods with high priority are executed first. If both the subclass and the parent class define magic methods with the same name, the magic method of the subclass will be executed first. If a class defines both a regular method and a magic method with the same name, the regular method will be executed first.

What is a magic method? How to use it in Laravel? The following article will introduce to you how to apply PHP magic methods in Laravel. I hope it will be helpful to you!

In PHP development, reflection and magic methods are two commonly used techniques. When we need to automatically generate code or dynamically call certain functions, reflection and magic methods can make our code more flexible and efficient. In this article, we will explore how to use reflection and magic methods to achieve automatic code generation and dynamic invocation. Reflection is a powerful tool provided by PHP, which can help us obtain information such as classes, methods, and properties when the program is running. Through reflection, we can dynamically obtain information such as methods, properties, and annotations of a class or object, so that

Magic methods: Understand core methods such as __construct and __destruct in PHP. In the PHP language, there are some special methods called "magic methods", including __construct, __destruct, etc. These methods play an important role in object-oriented programming in PHP. This article will explain the role and practical application of these methods. __construct method__construct method is a very important method, it is in PHP

PHP is a server-side scripting language developed based on C language, which is widely used in web development. Functions are one of the most basic and commonly used components in programs. PHP also provides many magic methods related to functions, which can help developers better take advantage of functions. In this article, we will introduce the magic methods of PHP functions and their usage. __construct()__construct() is one of the most commonly used magic methods in PHP. It is automatically called when creating an object for initialization.

What is a magic method? This article will take you through 16 magic methods that PHP developers must know and know. I hope it will be helpful to you!

The functions of PHP magic methods: 1. "__construct()" is automatically called when instantiating an object; 2. "__destruct()" is automatically called when the object is destroyed or the script execution ends; 3. "__call()" calls a method that does not exist on the object Automatically called when; 4. "__get()" is automatically called when obtaining non-existent attributes of the object; 5. "__set()" is automatically called when setting non-existent attributes of the object; 6. "__isset()" detects a certain attribute of the object Automatically called when the attribute exists, etc.
