


What are magic methods in PHP and provide an example of `__call()` and `__get()`.
Sep 20, 2025 am 12:50 AMThe __call() method is triggered when an inaccessible or undefined method is called on an object, allowing custom handling by accepting the method name and arguments, as shown when calling undefined methods like sayHello(). 2. The __get() method is invoked when accessing inaccessible or non-existent properties, enabling dynamic property retrieval, such as accessing name from the internal $data array in the Person class. 3. Both magic methods enhance flexibility by letting objects respond intelligently to undefined operations, but should be used cautiously to maintain code clarity and debuggability.
Magic methods in PHP are special built-in methods that start with two underscores (__
) and are automatically triggered in response to specific events or operations. They allow developers to define custom behaviors for common PHP operations like calling undefined methods, accessing properties, object instantiation, and more.

Two commonly used magic methods are __call()
and __get()
.
__call()
This method is triggered when an inaccessible or undefined method is called on an object (either public method that doesn't exist, or a private/protected method being accessed from outside).

Syntax:
public function __call($methodName, $arguments)
$methodName
: The name of the called method.$arguments
: An array of arguments passed to the method.
Example:

class User { private function greet($name) { echo "Hello, $name!"; } public function __call($method, $args) { echo "Method '$method' does not exist or is not accessible.<br>"; echo "You tried to pass: " . implode(', ', $args); } } $user = new User(); $user->greet('Alice'); // This won't trigger __call() because method exists but is private $user->sayHello('Bob'); // Triggers __call()
Output:
Method 'sayHello' does not exist or is not accessible. You tried to pass: Bob
Note: Since
greet()
is private, calling it directly from outside the class would result in a fatal error, not__call()
. But if the method were simply undefined,__call()
would handle it gracefully.
__get()
This magic method is invoked when trying to access an inaccessible or undefined property (i.e., a private/protected property or a property that doesn't exist).
Syntax:
public function __get($propertyName)
$propertyName
: The name of the property being accessed.
Example:
class Person { private $data = [ 'name' => 'John', 'age' => 30 ]; public function __get($property) { if (array_key_exists($property, $this->data)) { return $this->data[$property]; } else { echo "Property '$property' does not exist."; return null; } } } $person = new Person(); echo $person->name; // Output: John echo $person->email; // Output: Property 'email' does not exist.
Here, __get()
allows controlled access to the internal $data
array as if they were real properties.
These magic methods are useful for implementing flexible APIs, dynamic property/method handling, or creating "lazy" loading behavior. But they should be used carefully to avoid making code hard to debug or understand.
Basically, they let your objects respond intelligently when someone tries to use something that isn’t directly available.
The above is the detailed content of What are magic methods in PHP and provide an example of `__call()` and `__get()`.. 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.

ArtGPT
AI image generator for creative art from text prompts.

Stock Market GPT
AI powered investment research for smarter decisions

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)

The full version of Mantianxing Comic is https://www.mantianxingmh.com. The platform covers various themes such as passion, love, suspense, science fiction, etc., with rich resources and timely updates and supports classified retrieval; it provides high-definition picture quality, multiple page turning modes, custom background and brightness adjustment, and has an eye protection mode to optimize reading experience; users can create bookshelf, save reading records, download offline, and achieve cross-device synchronization progress.

OOPinPHPorganizescodeintoreusableclassesandobjects.1.Classesdefinepropertiesandmethods,instantiatedvia$this.2.Constructors(__construct)initializeobjectproperties.3.Accessmodifiers(public,private,protected)controlvisibility.4.Inheritance(extends)allow

Use mysqli_insert_id() (procedure style), $mysqli->insert_id (object style), or $pdo->lastInsertId() (PDO) to get the last inserted ID and needs to be called immediately in the same connection to ensure accuracy.

FinalclassesandmethodsinPHPpreventinheritanceandoverridingtoprotectcriticalcode.2.Afinalclasscannotbeextended,ensuringitsbehaviorremainsunchanged.3.Afinalmethodcannotbeoverridden,preservingconsistentimplementationacrosssubclasses.4.Usefinalforsecurit

Use single quotes or escaped double quotes to output HTML in PHP. It is recommended to wrap strings with single quotes to avoid attribute quotation conflicts. Dynamic content can be generated in combination with variable splicing or heredoc syntax.

Use$_GETtoaccessURLquerystringvariablesinPHP,suchasname=Johnandage=30fromhttps://example.com/search.php?name=John&age=30;alwaysvalidateandsanitizeinputsusingfilter_input()andavoidsensitivedatainURLsduetoexposurerisks.

TraitsinPHPenablehorizontalcodereusebyallowingclassestoinheritmethodsfromreusabletraitcontainers,bypassingsingleinheritancelimits.Forexample,theLoggabletraitprovidesalog()methodtoanyclassusingit,suchasUser,whichcanthencall$this->log("Usercrea

The official entrance to the MBTI free test website is https://www.16personalities.com/. The website provides Chinese and English version testing, covering personality dimension analysis, personalized reports and multi-scenario application suggestions, helping users to gain an in-depth understanding of their personality types.
