推荐学习:《PHP教程》
PHP中魔术方法详解,在PHP中有一类方法,很奇怪常,那就是只要满足一定条件,就会自己执行,那就是PHP中的魔术方法,
一、__construct构造方法
<?PHP class autoFelix { public function __construct() { echo '我是类autoFelix'; } } new autoFelix(); //即可输出:我是类autoFelix
二、 __destruct析构方法
<?PHP class autoFelix { public function __destruct() { echo '我准备销毁你了'; } } $a = new autoFelix(); unset($a); //即可输出:我准备销毁你了
三、 __clone克隆方法
<?PHP class autoFelix { public function __clone() { echo '我克隆了你'; } } $a = new autoFelix(); clone $a; //即可输出:我克隆了你
四、__call非静态调用方法
<?PHP class autoFelix { private function say() { echo 'hello, 我是autoFelix'; } public function __call($name, $arguments) { echo '你无权调用' . $name . '方法'; die; } } $a = new autoFelix(); $a->say(); //按理说应该报错 //即可输出:你无权调用say方法
五、__callStatic静态调用方法
<?PHP class autoFelix { private static function say() { echo 'hello, 我是autoFelix'; } public function __callStatic($name, $arguments) { echo '你无权调用' . $name . '方法'; die; } } $a = new autoFelix(); $a::say(); //按理说应该报错 //即可输出:你无权调用say方法
六、__debugInfo打印方法
<?PHP class autoFelix { public function __debugInfo() { echo '你看不到我任何信息的~'; } } var_dump(new autoFelix()); //即可输出:你看不到我任何信息的~
七、__get获取成员属性方法
<?PHP class autoFelix { private $name = 'autoFelix'; public function __get($name) { if(in_array($name, ['name', 'age'])) { echo $this->name; } else { echo '不是什么东西都能访问的~'; } } } $a = new autoFelix(); $a->name; //即可输出:autoFelix
八、__isset方法
<?PHP class autoFelix { private $name = 'autoFelix'; public function __isset($name) { if(in_array($name, ['name', 'age'])) { echo $this->name; } else { echo '不是什么东西都能访问的~'; } } } $a = new autoFelix(); isset($a->name); //结果: autoFelix
九、__set方法
<?PHP class autoFelix { public function __set($name, $value) { echo '你想给' . $name . '赋值' . $value; } } $a = new autoFelix(); $a->name = 'autoFelix'; //结果: 你想给name赋值autoFelix;
十、__invoke方法
<?PHP class autoFelix { public function __invoke() { echo '你还想调用我?'; } } $a = new autoFelix(); //对象直接当函数调用 $a(); //结果: 你还想调用我?
十一、__sleep方法
<?PHP class autoFelix { public function __sleep() { echo '弄啥嘞~'; } } $a = new autoFelix(); serialize($a); //结果: 弄啥嘞~
十二、__toString方法
<?PHP class autoFelix { public function __toString() { return '我是你得不到的对象...'; } } $a = new autoFelix(); echo $a; //结果: 我是你得不到的对象...
十三、__unset方法
<?PHP class autoFelix { private $name = 'autoFelix'; public function __unset($name) { echo '想删我? 你也配?'; } } $a = new autoFelix(); unset($a->name); //结果: 想删我? 你也配?
十四、__wakeup方法
<?PHP class autoFelix { public function __wakeup() { echo '又想弄啥嘞~'; } } $a = new autoFelix(); unserialize($a); //结果: 又想弄啥嘞~
推荐学习:《PHP教程》
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。