PHP magic method is a special function that is automatically triggered, used to respond to object-related events. They start with a double underscore without manual calls. 1.__construct() is used for object initialization and is automatically executed when creating an instance; 2.__destruct() performs cleaning operations when the object is destroyed; 3.__get() and __set() handle read and write undefined attributes; 4.__call() and __callStatic() handle undefined method calls; 5.__toString() defines the manifestation of the object when converting a string. These methods improve the flexibility and customizability of object behavior.
PHP magic methods are special functions that get triggered automatically in response to specific events or actions involving an object. They're called "magic" because they don't need to be called directly — they run behind the scenes when certain conditions are met. These methods always start with double underscores ( __
), and they allow developers to customize how objects behave in various situations.

Here are a few commonly used magic methods in PHP:
__construct()
– Object Initialization
This is probably the most widely used magic method. It's automatically called when a new instance of a class is created. You use it to set up initial values ??or perform setup tasks.

Example:
class User { public function __construct($name) { echo "User {$name} created."; } }
When you do new User("Alice")
, the message will show up. It's not just for printing — it's often used to inject dependencies or initialize properties.

__destruct()
– Cleanup After Object Is No Longer Needed
This method runs when an object is destroyed or when the script ends. It's useful for cleaning up resources like file handles, database connections, or memory.
Example:
public function __destruct() { // Close a database connection or log something }
Note: You can't pass parameters to __destruct()
and it's not guaranteed to run if the script crashes or is terminated abruptly.
__get()
and __set()
– Handling Undefined Properties
These two methods help manage access to inaccessible or undefined properties.
-
__get($property)
is called when you try to read a property that's not accessible or doesn't exist. -
__set($property, $value)
is triggered when writing to such a property.
They're useful for lazy loading or creating dynamic properties without explicitly defining them.
Example:
class Product { private $data = []; public function __set($name, $value) { $this->data[$name] = $value; } public function __get($name) { return $this->data[$name] ?? null; } }
Now you can do things like:
$product = new Product(); $product->price = 100; echo $product->price; // Outputs: 100
__call()
and __callStatic()
– Handling Undefined Methods
If you try to call a method that doesn't exist or isn't visible:
-
__call($method, $args)
handles instance method calls. -
__callStatic($method, $args)
handles static method calls.
These are handy for implementing fallback logic or dynamic method handling.
Example:
public function __call($method, $args) { if (strpos($method, 'get') === 0) { $property = lcfirst(substr($method, 3)); return $this->$property ?? null; } }
With this, calling $obj->getName()
would return the value of $this->name
if it exists, even if there's no explicit getName()
method.
__toString()
– Custom Object String Representation
This method allows an object to be treated like a string, for example when using echo $object
.
You must return a string value from this method. If you return something else, PHP will throw an error.
Example:
public function __toString() { return "This is a " . __CLASS__; }
Now echo $obj;
will output: This is a MyClass
.
There are other magic methods too — like __invoke()
, __sleep()
, __wakeup()
, __clone()
, and more — but the ones above are the most commonly encountered in day-to-day development.
Basically that's it.
The above is the detailed content of What are php magic methods and list some common ones.. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Common problems and solutions for PHP variable scope include: 1. The global variable cannot be accessed within the function, and it needs to be passed in using the global keyword or parameter; 2. The static variable is declared with static, and it is only initialized once and the value is maintained between multiple calls; 3. Hyperglobal variables such as $_GET and $_POST can be used directly in any scope, but you need to pay attention to safe filtering; 4. Anonymous functions need to introduce parent scope variables through the use keyword, and when modifying external variables, you need to pass a reference. Mastering these rules can help avoid errors and improve code stability.

To safely handle PHP file uploads, you need to verify the source and type, control the file name and path, set server restrictions, and process media files twice. 1. Verify the upload source to prevent CSRF through token and detect the real MIME type through finfo_file using whitelist control; 2. Rename the file to a random string and determine the extension to store it in a non-Web directory according to the detection type; 3. PHP configuration limits the upload size and temporary directory Nginx/Apache prohibits access to the upload directory; 4. The GD library resaves the pictures to clear potential malicious data.

There are three common methods for PHP comment code: 1. Use // or # to block one line of code, and it is recommended to use //; 2. Use /.../ to wrap code blocks with multiple lines, which cannot be nested but can be crossed; 3. Combination skills comments such as using /if(){}/ to control logic blocks, or to improve efficiency with editor shortcut keys, you should pay attention to closing symbols and avoid nesting when using them.

AgeneratorinPHPisamemory-efficientwaytoiterateoverlargedatasetsbyyieldingvaluesoneatatimeinsteadofreturningthemallatonce.1.Generatorsusetheyieldkeywordtoproducevaluesondemand,reducingmemoryusage.2.Theyareusefulforhandlingbigloops,readinglargefiles,or

The key to writing PHP comments is to clarify the purpose and specifications. Comments should explain "why" rather than "what was done", avoiding redundancy or too simplicity. 1. Use a unified format, such as docblock (/*/) for class and method descriptions to improve readability and tool compatibility; 2. Emphasize the reasons behind the logic, such as why JS jumps need to be output manually; 3. Add an overview description before complex code, describe the process in steps, and help understand the overall idea; 4. Use TODO and FIXME rationally to mark to-do items and problems to facilitate subsequent tracking and collaboration. Good annotations can reduce communication costs and improve code maintenance efficiency.

In PHP, you can use square brackets or curly braces to obtain string specific index characters, but square brackets are recommended; the index starts from 0, and the access outside the range returns a null value and cannot be assigned a value; mb_substr is required to handle multi-byte characters. For example: $str="hello";echo$str[0]; output h; and Chinese characters such as mb_substr($str,1,1) need to obtain the correct result; in actual applications, the length of the string should be checked before looping, dynamic strings need to be verified for validity, and multilingual projects recommend using multi-byte security functions uniformly.

ToinstallPHPquickly,useXAMPPonWindowsorHomebrewonmacOS.1.OnWindows,downloadandinstallXAMPP,selectcomponents,startApache,andplacefilesinhtdocs.2.Alternatively,manuallyinstallPHPfromphp.netandsetupaserverlikeApache.3.OnmacOS,installHomebrew,thenrun'bre

TolearnPHPeffectively,startbysettingupalocalserverenvironmentusingtoolslikeXAMPPandacodeeditorlikeVSCode.1)InstallXAMPPforApache,MySQL,andPHP.2)Useacodeeditorforsyntaxsupport.3)TestyoursetupwithasimplePHPfile.Next,learnPHPbasicsincludingvariables,ech
