The content shared with you in this article is about [php classes and objects] overloading, which has certain reference value. Friends in need can refer to it
Overloading
Definition: Refers to dynamically "creating" class attributes and methods.
Implementation: Magic method.
Overloaded methods will be called when calling class attributes or methods that are undefined or invisible in the current environment.
All overloaded methods must be declared as public
The parameters of these magic methods cannot be passed by reference.
Attribute overloading
public void __set ( string $name , mixed $value ) 在给不可访问属性赋值时,__set() 会被调用。public mixed __get ( string $name ) 读取不可访问属性的值时,__get() 会被调用.public bool __isset ( string $name ) 当对不可访问属性调用 isset() 或 empty() 时,__isset() 会被调用。public void __unset ( string $name ) 当对不可访问属性调用 unset() 时,__unset() 会被调用。
Parameter $name
refers to the name of the variable to be operated. The $value
parameter of the __set() method specifies the value of the $name
variable.
Attribute overloading can only be done in objects. As of PHP 5.3.0, defining these magic methods as static produces a warning. In static methods, these magic methods will not be called. So none of these methods can be declared static.
【未懂】 在除 isset() 外的其它语言结构中无法使用重载的属性,这意味着当对一个重载的属性使用 empty() 时,重载魔术方法将不会被调用。 为避开此限制,必须将重载属性赋值到本地变量再使用 empty()。
Example #1 使用 __get(),__set(),__isset() 和 __unset() 进行属性重载 <?php class PropertyTest { /** 被重载的数据保存在此 */ private $data = array(); /** 重载不能被用在已经定义的属性 */ public $declared = 1; /** 只有从类外部访问这个属性时,重载才会发生 */ private $hidden = 2; public function __set($name, $value) { echo "Setting '$name' to '$value'\n"; $this->data[$name] = $value; } public function __get($name) { echo "Getting '$name'\n"; if (array_key_exists($name, $this->data)) { return $this->data[$name]; } $trace = debug_backtrace(); trigger_error( 'Undefined property via __get(): ' . $name . ' in ' . $trace[0]['file'] . ' on line ' . $trace[0]['line'], E_USER_NOTICE); return null; } /** PHP 5.1.0之后版本 */ public function __isset($name) { echo "Is '$name' set?\n"; return isset($this->data[$name]); } /** PHP 5.1.0之后版本 */ public function __unset($name) { echo "Unsetting '$name'\n"; unset($this->data[$name]); } /** 非魔术方法 */ public function getHidden() { return $this->hidden; } } echo "<pre class="brush:php;toolbar:false">\n"; $obj = new PropertyTest; $obj->a = 1; //__set(): Setting 'a' to '1'echo $obj->a . "\n\n"; //__get(): Getting 'a'var_dump(isset($obj->a)); //__isset(): Is 'a' set? bool(true)unset($obj->a); //__unset(): Unsetting 'a'var_dump(isset($obj->a)); //__isset(): Is 'a' set? bool(false)echo "\n"; echo $obj->declared . "\n\n"; //可访问,__get()不被调用:1echo "Let's experiment with the private property named 'hidden':\n"; echo "Privates are visible inside the class, so __get() not used...\n"; echo $obj->getHidden() . "\n"; //可访问,__get()不被调用:2echo "Privates not visible outside of class, so __get() is used...\n"; echo $obj->hidden . "\n"; //__get(): Notice: Undefined property via __get(): hidden in D:\phpStudy2018\PHPTutorial\WWW\index.php on line 75 in D:\phpStudy2018\PHPTutorial\WWW\index.php on line 31?>
Method overloading
public mixed __call ( string $name , array $arguments ) 在对象中调用一个不可访问方法时,__call() 会被调用。public static mixed __callStatic ( string $name , array $arguments ) 在静态上下文中调用一个不可访问方法时,__callStatic() 会被调用。
Related recommendations:
Detailed explanation of overloading in PHP
Introduction to PHP overloading
The above is the detailed content of [php classes and objects] overloading. For more information, please follow other related articles on the PHP Chinese website!

TooptimizePHPcodeforreducedmemoryusageandexecutiontime,followthesesteps:1)Usereferencesinsteadofcopyinglargedatastructurestoreducememoryconsumption.2)LeveragePHP'sbuilt-infunctionslikearray_mapforfasterexecution.3)Implementcachingmechanisms,suchasAPC

PHPisusedforsendingemailsduetoitsintegrationwithservermailservicesandexternalSMTPproviders,automatingnotificationsandmarketingcampaigns.1)SetupyourPHPenvironmentwithawebserverandPHP,ensuringthemailfunctionisenabled.2)UseabasicscriptwithPHP'smailfunct

The best way to send emails is to use the PHPMailer library. 1) Using the mail() function is simple but unreliable, which may cause emails to enter spam or cannot be delivered. 2) PHPMailer provides better control and reliability, and supports HTML mail, attachments and SMTP authentication. 3) Make sure SMTP settings are configured correctly and encryption (such as STARTTLS or SSL/TLS) is used to enhance security. 4) For large amounts of emails, consider using a mail queue system to optimize performance.

CustomheadersandadvancedfeaturesinPHPemailenhancefunctionalityandreliability.1)Customheadersaddmetadatafortrackingandcategorization.2)HTMLemailsallowformattingandinteractivity.3)AttachmentscanbesentusinglibrarieslikePHPMailer.4)SMTPauthenticationimpr

Sending mail using PHP and SMTP can be achieved through the PHPMailer library. 1) Install and configure PHPMailer, 2) Set SMTP server details, 3) Define the email content, 4) Send emails and handle errors. Use this method to ensure the reliability and security of emails.

ThebestapproachforsendingemailsinPHPisusingthePHPMailerlibraryduetoitsreliability,featurerichness,andeaseofuse.PHPMailersupportsSMTP,providesdetailederrorhandling,allowssendingHTMLandplaintextemails,supportsattachments,andenhancessecurity.Foroptimalu

The reason for using Dependency Injection (DI) is that it promotes loose coupling, testability, and maintainability of the code. 1) Use constructor to inject dependencies, 2) Avoid using service locators, 3) Use dependency injection containers to manage dependencies, 4) Improve testability through injecting dependencies, 5) Avoid over-injection dependencies, 6) Consider the impact of DI on performance.

PHPperformancetuningiscrucialbecauseitenhancesspeedandefficiency,whicharevitalforwebapplications.1)CachingwithAPCureducesdatabaseloadandimprovesresponsetimes.2)Optimizingdatabasequeriesbyselectingnecessarycolumnsandusingindexingspeedsupdataretrieval.


Hot AI Tools

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

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

Undress AI Tool
Undress images for free

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

WebStorm Mac version
Useful JavaScript development tools

SublimeText3 English version
Recommended: Win version, supports code prompts!

Dreamweaver CS6
Visual web development tools

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SublimeText3 Chinese version
Chinese version, very easy to use
