PHP內建攔截器初步介紹
PHP提供了內建的攔截器(intercepter),它可以攔截髮送到未定義的屬性或者方法的訊息。它也被稱為過載。不過我們為了避免和java和c++中的過載歧義還是叫攔截器。
攔截器可以是類更加完善和安全。對於呼叫的未知的屬性或者方法可以自定義的處理。不管是自己猜測處理或者返回自定義的資訊。
- <?php
- /**
- * PHP5中攔截器學習測試
- * __get( $property ) 訪問未定義的屬性時候被呼叫
- * __set( $property, $value) 給未定義的屬性賦值時被呼叫
- * __isset( $property ) 給未定義的屬性呼叫isset()時候被呼叫
- * __unset( $property ) 給未定義的屬性呼叫unset()的時候被呼叫
- * __call( $method, $arg_array ) 呼叫未定義的方法時候被呼叫
- *
- */
- 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; //返回null 因為類中沒有定義這個屬性
- isset($person->age); //如果類中有這個屬性 但是沒有賦值 那麼不會 不會走__isset 會直接返回false或者true
- $person->sex = `male`;//如果對一個不存在的屬性定義那麼會呼叫__get 方法
- $person->init(`ZhangSan`,`20`);// 這個會走__call 引數會當作陣列 $arg_array傳入
- unset($person->sex);//這裡會呼叫__unset 方法
本文轉自kefirking 51CTO部落格,原文連結:http://blog.51cto.com/phpzf/804700,如需轉載請自行聯絡原作者
相關文章
- Flume內建攔截器與自定義攔截器(程式碼實戰)
- 攔截器,攔截器棧總結
- MyBatis攔截器MyBatis
- Mybatis 攔截器MyBatis
- sql攔截器SQL
- Spring MVC 中的攔截器的使用“攔截器基本配置” 和 “攔截器高階配置”SpringMVC
- AdGuard 最高階的(廣告攔截軟體)功能介紹
- 原始碼分析三:OkHttp(2)—攔截器簡介原始碼HTTP
- SpringMVC攔截器,設定不攔截的URLSpringMVC
- axios攔截器iOS
- Mybatis Interceptor 攔截器MyBatis
- axios 攔截器iOS
- spring攔截器Spring
- Java interceptor 攔截器Java
- SpringMVC攔截器SpringMVC
- vue中用axios攔截器攔截請求和響應VueiOS
- SpringMVC-攔截器SpringMVC
- 攔截過濾器模式過濾器模式
- gRPC(3):攔截器RPC
- 【SpringMVC】 4.3 攔截器SpringMVC
- web api新增攔截器WebAPI
- spring boot 攔截器Spring Boot
- SpringMVC配置攔截器SpringMVC
- Mybatis中的攔截器MyBatis
- mybatis註冊攔截器MyBatis
- HandlerInterceptor - 自定義攔截器
- SpringBoot攔截器中獲取註解、攔截器中注入ServiceSpring Boot
- Angular 中攔截器的真相和 HttpClient 內部機制AngularHTTPclient
- 03-CSS初步介紹CSS
- struts struts攔截器(過濾器)過濾器
- webwork的攔截器真是好用Web
- Java實現的攔截器Java
- Spring Boot新增攔截器Spring Boot
- grpc中的攔截器RPC
- 16、threadlocal+攔截器thread
- Java Struts 實現攔截器Java
- Mybatis-分頁攔截器MyBatis
- SpringMVC中的攔截器SpringMVC