Summary of Magic Methods in PHP: __construct, __destruct, __call, __callstatic,__get, __set, __isset, __unset, __sleep

Source: Internet
Author: User

Summary of Magic Methods in PHP: __construct, __destruct, __call, __callstatic,__get, __set, __isset, __unset, __sleep, __wakeup, __toString , __set_state, __clone and __autoload

1, __get, __set
These two methods are designed for properties that are not declared in the class and their parent class.
__get ($property) Access this method when an undefined property is called
__set ($property, $value) is called when an undefined property is assigned a value
No declarations are included when using object invocation, access control is a property of Proteced,private (that is, properties that do not have permission access)

2, __isset, __unset
__isset ($property) This method is called when the Isset () function is called on an undefined property
__unset ($property) This method is called when the unset () function is called on an undefined property
As with the __get method and the __set method, there is no declaration here that the access control is a property of Proteced,private when using an object invocation (that is, a property without permission access)
3, __call
__call ($method, $arg _array) when calling an undefined method is to call this adapting
Undefined methods here include methods that do not have permission access

4, __autoload
The __autoload function, which is called automatically when trying to use a class that has not yet been defined. By calling this function, the scripting engine has the last chance to load the required classes before PHP fails.
Note: Exceptions thrown in the __autoload function cannot be caught by a catch statement block and cause a fatal error.

5, __construct, __destruct
__construct constructs a method that calls this method when an object is created, and the advantage of using this method is that you can have a unique name for the constructor method, Regardless of the name of the class in which it resides. So you don't need to change the name of the constructor when you change the name of the class
__destruct destructor, PHP will call this method before the object is destroyed (that is, before it is purged from memory)
by default, PHP simply frees the memory occupied by the object's properties and destroys the object-related resources. The
destructor allows you to clear memory by executing arbitrary code after using an object.
when PHP determines that your script is no longer related to the object, the destructor is called.
within the namespace of a function, this occurs when the function return.
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. You typically assign a variable to be on duty to null or call unset. The assignment of an object in

6, __clone
PHP5 is a reference assignment that is used, and if you want to copy an object, you need to use the Clone method, which is called by an object that automatically calls the __clone Magic method
If you need to perform some initialization operations on object replication. The

7, __TOSTRING&NBSP can be implemented in the __clone method, and
__tostring methods are called automatically when an object is converted to a string, such as when using Echo to print an object
if the class does not implement this method. The object cannot be printed via echo, otherwise it will be displayed: Catchable fatal Error:object of class test could not being converted to string in
This method must return a string

Before PHP 5.2.0, the __tostring method will only take effect if you use Echo () or print () together. After PHP 5.2.0, you can take effect in any string environment (for example, with the%s modifier through printf (), but not in a non-string environment (such as using the%d modifier). From PHP 5.2.0, a e_recoverable_error error is reported if an object with an undefined __tostring method is converted to a string.

8, __sleep, __wakeup
__sleep when serialized with
__wakeup crossdress call
Serialize () Check the class for Magic name __sleep function. If so, the function will run before any serialization. It clears the object and should return an array containing all the variable names that should be serialized in the object. The purpose of the
to use __sleep is to close any database connections that an object might have, submit data for waiting, or perform similar cleanup tasks. In addition, this function is useful if you have very large objects and do not need to be fully stored.
Conversely, unserialize () checks for the existence of a function with the magic name __wakeup. If present, this function can reconstruct any resources that an object might have. The purpose of the
using __wakeup is to reconstruct any database connections that may be lost in serialization and to handle other reinitialization tasks.

9, __set_state
when calling Var_export (), this static method is called (Valid from PHP 5.1.0).
The only parameter to this method is an array that contains the by array (' property ' = = value, ...) The class properties of the format arrangement.

10, __invoke
The __invoke method is called automatically when you try to invoke an object in a way that invokes a function.
PHP5.3.0 or later
11, __callstatic
It works like the __call () Magic Method, __callstatic () is to handle static method calls,
PHP5.3.0 version Valid
PHP does strengthen the definition of the __callstatic () method; it must be public and must be declared static. Similarly, the __call () Magic method must be defined as public, and all other magic methods must do so.

Summary of Magic Methods in PHP: __construct, __destruct, __call, __callstatic,__get, __set, __isset, __unset, __sleep

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.