PHP提供了内置的拦截器(intercepter),它可以拦截发送到未定义的属性或者方法的消息。它也被称为重载。不过我们为了避免和java和c++中的重载歧义还是叫拦截器。
拦截器可以是类更加完善和安全。对于调用的未知的属性或者方法可以自定义的处理。不管是自己猜测处理或者返回自定义的信息。
- <?php
-
-
-
-
-
-
-
-
-
- error_reporting(E_ALL);
- class person {
-
- public $name;
- public $age;
-
- public function __get( $property ) {
- return null;
- }
-
- public function __set( $property, $value) {
- return null;
- }
-
- public function __isset( $property ) {
- return false;
- }
-
- public function __unset( $property ) {
- return true;
- }
-
- public function __call( $method,$arg_array ) {
- return $arg_array;
- }
-
- public function initialize($name,$age) {
- $this->name = $name;
- $this->age = $age;
- return true;
- }
-
- }
- $person = new person();
- $person->sex;
- isset($person->age);
- $person->sex = 'male';
- $person->init('ZhangSan','20');
- unset($person->sex);
本文转自kefirking 51CTO博客,原文链接:http://blog.51cto.com/phpzf/804700,如需转载请自行联系原作者