当前位置:网站首页>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
边栏推荐
- Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1
- 2022-7-6 使用SIGURG来接受外带数据,不知道为什么打印不出来
- 118. Yanghui triangle
- mysql ”Invalid use of null value“ 解决方法
- 【堡垒机】云堡垒机和普通堡垒机的区别是什么?
- 10 pictures open the door of CPU cache consistency
- Write it down once Net a new energy system thread surge analysis
- Navicat run SQL file import data incomplete or import failed
- 带你掌握三层架构(建议收藏)
- Use of polarscatter function in MATLAB
猜你喜欢
LED light of single chip microcomputer learning notes
Battle Atlas: 12 scenarios detailing the requirements for container safety construction
Write it down once Net a new energy system thread surge analysis
Enregistrement de la navigation et de la mise en service du robot ROS intérieur (expérience de sélection du rayon de dilatation)
Realize the IP address home display function and number home query
Leetcode simple question sharing (20)
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
Flink | multi stream conversion
【堡垒机】云堡垒机和普通堡垒机的区别是什么?
2022-7-6 初学redis(一)在 Linux 下下载安装并运行 redis
随机推荐
. Net core about redis pipeline and transactions
How far can it go to adopt a cow by selling the concept to the market?
Ogre introduction
Xshell connection server changes key login to password login
【堡垒机】云堡垒机和普通堡垒机的区别是什么?
实现IP地址归属地显示功能、号码归属地查询
Digital IC Design SPI
648. 单词替换 : 字典树的经典运用
Introduction to database system - Chapter 1 introduction [conceptual model, hierarchical model and three-level mode (external mode, mode, internal mode)]
Help tenants
xshell连接服务器把密钥登陆改为密码登陆
Esp32 series column
Error lnk2019: unresolved external symbol
[daily training -- Tencent select 50] 231 Power of 2
postgresql array类型,每一项拼接
【日常训练--腾讯精选50】231. 2 的幂
高等数学---第八章多元函数微分学1
TPG x AIDU | AI leading talent recruitment plan in progress!
2022-7-6 Leetcode 977. Square of ordered array
JS function returns multiple values