当前位置:网站首页>The meaning of variables starting with underscores in PHP
The meaning of variables starting with underscores in PHP
2022-07-07 13:52:00 【Full stack programmer webmaster】
Named rules Add one as private Adding two is generally the system default , System predefined , The so-called : ===================== “ Magic methods ” And “ magic constant ” ===================== *PHP Constants that start and end with double underscores are “ magic constant ”:
__LINE__ The current line number in the file .
__FILE__ The full path and filename of the file .
__DIR__ Directory of files . If used in included files , Returns the directory where the included files are located . It is equivalent to dirname(__FILE__). Unless it's the root directory , Otherwise, the name in the directory does not include the trailing slash
notes : The above is from “PHP Chinese Manual -> Language reference -> Constant -> magic constant ”.
from php5 Later versions ,php Class can use magic methods .
php Specify two underscores (__) The first methods are reserved as magic methods , So it's better not to use function names __ start , Except for the purpose of overloading existing magic methods .
PHP There are many magic methods in :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone, __autoload
1、__get、__set
These two methods are designed for properties that are not declared in classes and their parent classes
__get( $property ) When calling an undefined property , This method will be triggered , The parameter passed is the name of the property being accessed
__set( property, value ) When assigning a value to an undefined property , This method will be triggered , The parameters passed are the name and value of the set property
There is no declaration here, including when using object calls , Access control is proteced,private Properties of ( That is, there is no access to the property ).
2、__isset、__unset
__isset( $property ) When called on an undefined property isset() Function
__unset( $property ) When called on an undefined property unset() Function
And __get Methods and __set In the same way , There is no declaration here, including when using object calls , Access control is proteced,private Properties of ( That is, there is no access to the property )
3、__call
__call( method, arg_array ) When you call an undefined method, you call this method
The undefined methods here include methods that do not have permission to access ; If the method does not exist, go to the parent class to find this method , If the parent class does not exist, call the __call() Fang ? Law , If it does not exist in this class __call() Method is to find the __call() Method
4、__autoload
__autoload function , It will automatically call when trying to use a class that has not been defined . By calling this function , The script engine is in PHP There was a last chance to load the required classes before the error failed .
If you want to define a global automatic loading class , You have to use spl_autoload_register() Method registers the processing class to PHP Standard library :
<?php
class Loader
{
static function autoload_class($class_name)
{
// Look for the right $class_name class , And introduce , If not, throw an exception
}
}
/**
* Set the automatic loading of objects
* spl_autoload_register — Register given function as __autoload() implementation
*/
spl_autoload_register(array('Loader', 'autoload_class'));
$a = new Test();//Test useless require Is instantiated , Implement automatic loading , Many frameworks use this method to automatically load classes
?>
Be careful : stay __autoload An exception thrown in a function cannot be catch Statement blocks capture and cause fatal errors , So capture should be done in the function itself .
5、__construct、__destruct
__construct Construction method , This method is called when an object is created , be relative to PHP4 The advantage of using this method is : You can give a constructor a unique name , Whatever the name of the class it's in . So when you change the name of a class , There is no need to change the name of the constructor
__destruct destructor ,PHP Before the object is destroyed ( That is, before clearing from memory ) Call this method . By default ,PHP Just release the memory occupied by the object properties and destroy the resources related to the object , Destructors allow you to clear memory by executing arbitrary code after using an object . When PHP When you decide that your script is no longer related to an object , The destructor will be called .
In the namespace of a function , This happens to the function return When .
For global variables , This happens at the end of the script .
If you want to explicitly destroy an object , You can assign any other value to the variable that points to the object . Usually the variable is assigned to NULL Or call unset.
6、__clone
PHP5 Object assignments in are reference assignments used , If you want to copy an object, you need to use clone Method , When this method is called, the object will automatically call __clone Magic methods , If you need to perform some initialization operation in object replication , Can be in __clone Method realization .
7、__toString
__toString Method is called automatically when converting an object to a string , For example, use echo When printing objects .
If the class does not implement this method , They can't get through echo Print object , Otherwise it will show :Catchable fatal error: Object of class test could not be converted to string in This method must return a string .
stay PHP 5.2.0 Before ,__toString Methods can only be used in combination echo() or print() when To take effect .PHP 5.2.0 after , Can take effect in any string environment ( For example, through printf(), Use %s Modifier ), but Cannot be used in non string environments ( If you use %d Modifier ). from PHP 5.2.0, If an undefined __toString Object of method Convert to string , Will report a E_RECOVERABLE_ERROR error .
8、__sleep、__wakeup
__sleep When serializing, use
__wakeup Called when deserializing
serialize() Check for magic names in the class __sleep Function of . If so , This function will run before any serialization . It clears the object and should return an array containing the names of all variables in the object that should be serialized .
Use __sleep The purpose of is to close any database connection that the object may have , Submit pending data or perform similar cleanup tasks . Besides , This function is also useful if you have very large objects and don't need to store them completely .
By contraries ,unserialize() Check for magic names __wakeup The existence of a function of . If there is , This function rebuilds any resources an object might have .
Use __wakeup The purpose of is to rebuild any database connections that may be lost in serialization and handle other reinitialization tasks .
9、__set_state
When calling var_export() when , This static Method will be called ( since PHP 5.1.0 Effective ).
The only argument to this method is an array , It includes pressing array(’property’ => value, …) Class properties of formatting .
10、__invoke
When trying to call an object as a function ,__invoke Method will be called automatically .
PHP5.3.0 The above version is valid
11、__callStatic
It works in a way similar to __call() Magic methods ,__callStatic() To handle static method calls ,
PHP5.3.0 The above version is valid PHP It really strengthens the right __callStatic() Method definition ; It has to be public , And must be declared static . Again ,__call() Magic methods have to be defined as public , All other magic methods must be like this .
Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/113267.html Link to the original text :https://javaforall.cn
边栏推荐
- [dark horse morning post] Huawei refutes rumors about "military master" Chen Chunhua; Hengchi 5 has a pre-sale price of 179000 yuan; Jay Chou's new album MV has played more than 100 million in 3 hours
- Battle Atlas: 12 scenarios detailing the requirements for container safety construction
- Learning breakout 2 - about effective learning methods
- Move base parameter analysis and experience summary
- 【堡垒机】云堡垒机和普通堡垒机的区别是什么?
- 数字ic设计——SPI
- 2022-7-6 Leetcode27.移除元素——太久没有做题了,为双指针如此狼狈的一天
- Fast development board pinctrl and GPIO subsystem experiment for itop-imx6ull - modify the device tree file
- move base参数解析及经验总结
- Mysql怎样控制replace替换的次数?
猜你喜欢
"Song of ice and fire" in the eleventh issue of "open source Roundtable" -- how to balance the natural contradiction between open source and security?
干货|总结那些漏洞工具的联动使用
JS slow motion animation principle teaching (super detail)
Use of polarscatter function in MATLAB
2022-7-7 Leetcode 34. Find the first and last positions of elements in a sorted array
Dry goods | summarize the linkage use of those vulnerability tools
提升树莓派性能的方法
Detr introduction
566. Reshaping the matrix
Redis 核心数据结构 & Redis 6 新特性详
随机推荐
[daily training -- Tencent select 50] 231 Power of 2
室內ROS機器人導航調試記錄(膨脹半徑的選取經驗)
SSRF漏洞file伪协议之[网鼎杯 2018]Fakebook1
3D Detection: 3D Box和点云 快速可视化
【日常训练--腾讯精选50】231. 2 的幂
THINKPHP框架的优秀开源系统推荐
JS function returns multiple values
Detr introduction
作战图鉴:12大场景详述容器安全建设要求
Lavarel之环境配置 .env
Ogre introduction
Custom thread pool rejection policy
Oracle advanced (V) schema solution
供应链供需预估-[时间序列]
[daily training] 648 Word replacement
Server to server (S2S) event (adjust)
Cinnamon taskbar speed
JS slow motion animation principle teaching (super detail)
数据库系统概论-第一章绪论【概念模型、层次模型和三级模式(外模式、模式、内模式)】
. Net core about redis pipeline and transactions