Summary of magic method examples in PHP object-oriented

伊谢尔伦
Release: 2023-03-12 13:54:01
Original
1011 people have browsed it

Magic methodis a unique feature ofPHP object-oriented. They are triggered under specific circumstances and all start with a double underscore. You can understand them as hooks. Using pattern methods, you can easily implement overloading in PHP object-oriented (Overloading means dynamically creating classattributes and method). Many magic methods appear in pairs. The following lists all the current pattern methods in PHP.

1.construct, destruct

constuct is called when constructing the object;
destruct is called when the object is explicitly destroyed or the script ends;

2.get, set

set is called when assigning a value to an inaccessible or non-existent property
get is called when reading an inaccessible or non-existent property

3.isset, unset

isset is called when isset() or empty() is called on an inaccessible or non-existent property
unset is called on an inaccessible or non-existent property Called when a non-existing property is unset

4.call, callStatic

call is called when an inaccessible or non-existent method is called
callStatic cannot be called

5.sleep is called when accessing or non-existing static methods, wakeup

sleep is called when using serialize, when you don't need to save all of the large object It is useful for data
wakeup is called when using unserialize and can be used to do some object initialization operations

6.clone

It is called when cloning an object , used to adjust the cloning behavior of objects

7.toString

Called when a class is converted to a string

8 .invoke

Called when an object is called functionally

9.set_state

When var_export() is called to export a class, This static method is called. Use the return value of set_state as the return value of var_export.

10.debuginfo

Called when var_dump() is called to print an object (when you don’t want to print all attributes) Applicable to PHP5.6 version

PHP magic method usage examples are as follows:

var = 'test after wakeup'; } //当一个类被转换成字符串时被调用 public function toString() { return 'toString called'.PHP_EOL; } //进行对象clone时被调用,用来调整对象的克隆行为 public function clone() { echo 'clone called'.PHP_EOL; } //当以函数方式调用对象时被调用 public function invoke() { echo 'invoke called'.PHP_EOL; } //当调用var_export()导出类时,此静态方法被调用。用set_state的返回值做为var_export的返回值。 public static function set_state($arr) { return 'set_state called'.PHP_EOL; } //当调用var_dump()打印对象时被调用(当你不想打印所有属性)适用于PHP5.6版本 public function debuginfo($arr) { echo 'debuginfo called'.PHP_EOL; return array( 'var' => 'test fro debuginfo' ); } } $m = new Magic(); //construct()被调用 $m->not_exist_property = test; //set()被调用 echo $m->not_exist_property;//get()被调用 $m->abc(1,2,3); //call()被调用 echo isset($m->not_exist_property); //isset()被调用,返回bool值 unset($m->not_exist_property); //unset()被调用 echo $tmp = serialize($m); //sleep()被调用 unserialize($tmp); //wakeup()被调用 $m1 = clone $m; //clone()被调用,对象默认是引用传递,使用clone关键词则可实现对象复制 $m(); //invoke() eval( '$m2 = ' . var_export ( $m , true ) . ';' );var_dump($m2); var_dump($m); //最后destruct()被调用 /* 结果: construct called not_exist_property-testset called not_exist_propertyget called abc-1,2,3call called not_exist_propertyisset called 1not_exist_propertyunset called sleep called O:5:"Magic":1:{s:13:"var1111111111";N;}wakeup called destruct called clone called invoke called string(20) "set_state called " class Magic#1 (1) { public $var => string(4) "test" } destruct called destruct called */
Copy after login

The above is the detailed content of Summary of magic method examples in PHP object-oriented. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!