当前位置:网站首页>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
边栏推荐
- 2022-7-7 Leetcode 844. Compare strings with backspace
- 566. Reshaping the matrix
- Excerpt from "misogyny: female disgust in Japan"
- Oracle advanced (V) schema solution
- 得物客服热线的演进之路
- Realize the IP address home display function and number home query
- ROS机器人更换新雷达需要重新配置哪些参数
- Ways to improve the performance of raspberry pie
- Write it down once Net a new energy system thread surge analysis
- Battle Atlas: 12 scenarios detailing the requirements for container safety construction
猜你喜欢
最佳实践 | 用腾讯云AI意愿核身为电话合规保驾护航
室內ROS機器人導航調試記錄(膨脹半徑的選取經驗)
Digital IC Design SPI
Evolution of customer service hotline of dewu
作战图鉴:12大场景详述容器安全建设要求
1、深拷贝 2、call apply bind 3、for of for in 区别
Error lnk2019: unresolved external symbol
Battle Atlas: 12 scenarios detailing the requirements for container safety construction
2022-7-7 Leetcode 844.比较含退格的字符串
566. 重塑矩阵
随机推荐
Distributed transaction solution
How to make join run faster?
Esp32 ① compilation environment
【面试高频题】难度 2.5/5,简单结合 DFS 的 Trie 模板级运用题
FCOS3D label assignment
Some principles of mongodb optimization
使用day.js让时间 (显示为几分钟前 几小时前 几天前 几个月前 )
. Net core about redis pipeline and transactions
Cinnamon taskbar speed
Thread pool reject policy best practices
Introduction and basic use of stored procedures
Help tenants
Fast development board pinctrl and GPIO subsystem experiment for itop-imx6ull - modify the device tree file
Talk about pseudo sharing
Learning breakout 2 - about effective learning methods
Final review notes of single chip microcomputer principle
云计算安全扩展要求关注的安全目标和实现方式区分原则有哪些?
Read PG in data warehouse in one article_ stat
Introduction to database system - Chapter 1 introduction [conceptual model, hierarchical model and three-level mode (external mode, mode, internal mode)]
为租客提供帮助