当前位置:网站首页>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
边栏推荐
- Digital IC Design SPI
- PHP - laravel cache
- Server to server (S2S) event (adjust)
- 使用day.js让时间 (显示为几分钟前 几小时前 几天前 几个月前 )
- JS function returns multiple values
- JS slow motion animation principle teaching (super detail)
- What are the principles for distinguishing the security objectives and implementation methods that cloud computing security expansion requires to focus on?
- Laravel5 call to undefined function openssl cipher iv length() 报错 PHP7开启OpenSSL扩展失败
- 内存溢出和内存泄漏的区别
- Milkdown control icon
猜你喜欢
.net core 关于redis的pipeline以及事务
高等数学---第八章多元函数微分学1
为租客提供帮助
[fortress machine] what is the difference between cloud fortress machine and ordinary fortress machine?
2022-7-6 使用SIGURG来接受外带数据,不知道为什么打印不出来
The delivery efficiency is increased by 52 times, and the operation efficiency is increased by 10 times. See the compilation of practical cases of financial cloud native technology (with download)
Use of polarscatter function in MATLAB
最佳实践 | 用腾讯云AI意愿核身为电话合规保驾护航
Cmake learning and use notes (1)
Final review notes of single chip microcomputer principle
随机推荐
10 pictures open the door of CPU cache consistency
记一次 .NET 某新能源系统 线程疯涨 分析
2022-7-6 sigurg is used to receive external data. I don't know why it can't be printed out
[fortress machine] what is the difference between cloud fortress machine and ordinary fortress machine?
Some principles of mongodb optimization
Help tenants
Indoor ROS robot navigation commissioning record (experience in selecting expansion radius)
toRaw和markRaw
Mongodb command summary
mysql 局域网内访问不到的问题
PC端页面如何调用QQ进行在线聊天?
【面试高频题】难度 2.5/5,简单结合 DFS 的 Trie 模板级运用题
566. 重塑矩阵
requires php ~7.1 -&gt; your PHP version (7.0.18) does not satisfy that requirement
Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1
Toraw and markraw
Best practice | using Tencent cloud AI willingness to audit as the escort of telephone compliance
3D Detection: 3D Box和点云 快速可视化
2022-7-6 Leetcode27. Remove the element - I haven't done the problem for a long time. It's such an embarrassing day for double pointers
"Song of ice and fire" in the eleventh issue of "open source Roundtable" -- how to balance the natural contradiction between open source and security?