PHP中的魔术方法总结和使用实例
$arguments); echo __call called.PHP_EOL; } //调用不可访问或不存在的静态方法时被调用 public static function __callStatic($name。
用__set_state的返回值做为var_export的返回值。
$value) { echo $name.-.$value; echo __set called.PHP_EOL; } //读取不可访问或不存在属性时被调用 public function __get($name) { echo $name; echo __get called.PHP_EOL; } //调用不可访问或不存在的方法时被调用 public function __call($name, $arguments); echo __callStatic called.PHP_EOL; } //对不可访问或不存在的属性调用isset()或empty()时被调用 public function __isset($name) { echo $name; echo __isset called.PHP_EOL; return true; } //对不可访问或不存在的属性进行unset时被调用 public function __unset($name) { echo $name; echo __unset called.PHP_EOL; } //serialize时被调用, 1.__construct, 10.__debuginfo 当调用var_dump()打印对象时被调用(当你不想打印所有属性)适用于PHP5.6版本 PHP魔术方法使用实例如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 ?php class Magic { public $var = test; //构造函数。
__set __set当给不可访问或不存在属性赋值时被调用 __get读取不可访问或不存在属性时被调用 3.__isset,你可以把它们理解为钩子,3); //__call()被调用 echo isset($m-not_exist_property); //__isset()被调用,以下列出目前PHP中所有的模式方法。
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,用来调整对象的克隆行为 7.__toString 当一个类被转换成字符串时被调用 8.__invoke 当以函数方式调用对象时被调用 9.__set_state 当调用var_export()导出类时,返回bool值 unset($m-not_exist_property); //__unset()被调用 echo $tmp = serialize($m); //__sleep()被调用 unserialize($tmp); //__wakeup()被调用 $m1 = clone $m; //__clone()被调用, true ) . ; );var_dump($m2); var_dump($m); //最后__destruct()被调用 /* 结果: __construct called not_exist_property-test__set called not_exist_property__get called abc-1,在创建对象的时候调用 public function __construct() { echo __construct called.PHP_EOL; } //某个对象的引用都被删除、对象被销毁、调用exit()后、脚本关闭时被调用 public function __destruct() { echo __destruct called.PHP_EOL; } //当给不可访问或不存在属性赋值时被调用 public function __set($name,用__set_state的返回值做为var_export的返回值,__unset __isset对不可访问或不存在的属性调用isset()或empty()时被调用 __unset对不可访问或不存在的属性进行unset时被调用 4.__call。
此静态方法被调用,魔术方法很多还是成对出现的。
对象默认是引用传递。
__wakeup __sleep当使用serialize时被调用,都是以双下划线开头,,用来调整对象的克隆行为 public function __clone() { echo __clone called.PHP_EOL; } //当以函数方式调用对象时被调用 public function __invoke() { echo __invoke called.PHP_EOL; } //当调用var_export()导出类时,利用模式方法可以轻松实现PHP面向对象中重载(Overloading即动态创建类属性和方法), $arguments) { echo $name . - . implode(,, 魔术方法是PHP面向对象中特有的特性,__callStatic __call调用不可访问或不存在的方法时被调用 __callStatic调用不可访问或不存在的静态方法时被调用 5.__sleep,此静态方法被调用。
2。
可用于做些对象的初始化操作 public function __wakeup() { echo __wakeup called.PHP_EOL; $this-var = test after wakeup; } //当一个类被转换成字符串时被调用 public function __toString() { return __toString called.PHP_EOL; } //进行对象clone时被调用,当你不需要保存大对象的所有数据时很有用 public function __sleep() { echo __sleep called.PHP_EOL; return array(var1111111111); } //unserialize时被调用,它们在特定的情况下被触发,3__call called not_exist_property__isset called 1not_exist_property__unset 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 */ ,__destruct __constuct构建对象的时被调用; __destruct明确销毁对象或脚本结束时被调用; 2.__get,使用clone关键词则可实现对象复制 $m(); //__invoke() eval( $m2 = . var_export ( $m ,当你不需要保存大对象的所有数据时很有用 __wakeup当使用unserialize时被调用,可用于做些对象的初始化操作 6.__clone 进行对象clone时被调用。
$arguments) { echo $name . - . implode(,2,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jiaob/php/12040.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
9. PHPDebugbar PHPDebugbar也是
时间:2021-01-13
-
10个免费的PHP编辑器/开拓
时间:2021-01-13
-
2019年最好用的10个php开拓
时间:2021-01-13
-
在casescheme:下面加入 retu
时间:2021-01-13
-
php实现将wav文件转换成图
时间:2021-01-11
-
PHP判断是否为空的几个函
时间:2021-01-11
-
护卫神php套件 php版本升级
时间:2021-01-10
-
浅析iis7.5安装配置php环境
时间:2021-01-10
热门文章
-
2019年最好用的10个php开发工具推荐
时间:2020-12-23
-
PHP的伪随机数与真随机数详解
时间:2021-01-04
-
PHP中把错误日志保存在系统日志中(Win
时间:2020-12-29
-
9. PHPDebugbar PHPDebugbar也是一款PHP调试器
时间:2021-01-13
-
10个免费的PHP编辑器/开拓东西推荐
时间:2021-01-13
-
浅析iis7.5安装配置php环境
时间:2021-01-10
-
Destoon启用https 后台登录不了
时间:2020-12-23
-
php实现的日历程序
时间:2020-12-29
-
PHP实现链式操作的核心思想
时间:2020-12-29
-
2019年最好用的10个php开拓东西推荐
时间:2021-01-13
