PHP有如下几个拦截器:

1、__get($property)
功能:访问未定义的属性是被调用
2、__set($property, $value)
功能:给未定义的属性设置值时被调用
3、__isset($property)
功能:对未定义的属性调用isset()时被调用
4、__unset($property)
功能:对未定义的属性调用unset()时被调用
5、__call($method, $arg_array)
功能:调用未定义的方法时被调用

拦截器,顾名思义,它就“拦截”未定义的属性和方法,有点类似__autoload和__construct等方法,应用案例如下(摘自网络):

    1. // 若访问一个未定义的属性,则将调用get{$property}对应的方法
    2. function __get($property){
    3. $method ="get{$property}";
    4. if(method_exists($this, $method)){
    5. return $this->$method();
    6. }
    7. }
    8. // 若给一个未定义的属性设置值,则将调用set{$property}对应的方法
    9. function __set($property, $value){
    10. $method ="set{$property}";
    11. if(method_exists($this, $method)){
    12. return $this->$method($value);
    13. }
    14. }
    15. // 若用户对未定义的属性调用isset方法,
    16. function __isset($property){
    17. $method ="isset{$property}";
    18. if(method_exists($this, $method)){
    19. return $this->$method();
    20. }
    21. }
    22. // 若用户对未定义的属性调用unset方法,
    23. // 则认为调用对应的unset{$property}方法
    24. function __unset($property){
    25. $method ="unset{$property}";
    26. if(method_exists($this, $method)){
    27. return $this->$method();
    28. }
    29. }
    30. function __call($method, $arg_array){
    31. if(substr($method,0,3)=="get"){
    32. $property = substr($method,3);
    33. $property = strtolower(substr($property,0,1)).substr($property,1);
    34. return $this->$property;
    35. }
    36. }

PHP拦截器的使用(转)的更多相关文章

  1. 6. ModelDriven拦截器、Preparable 拦截器

    1. 问题 Struts2 的 Action 我们将它定义为一个控制器,但是由于在 Action 中也可以来编写一些业务逻辑,也有人会在 Action 输入业务逻辑层. 但是在企业开发中,我们一般会将 ...

  2. springmvc的拦截器

    什么是拦截器                                                         java里的拦截器是动态拦截action调用的对象.它提供了一种机制可以使 ...

  3. Struts的拦截器

    Struts的拦截器 1.什么是拦截器 Struts的拦截器和Servlet过滤器类似,在执行Action的execute方法之前,Struts会首先执行Struts.xml中引用的拦截器,在执行完所 ...

  4. Struts2拦截器的执行过程浅析

    在学习Struts2的过程中对拦截器和动作类的执行过程一度陷入误区,特别读了一下Struts2的源码,将自己的收获分享给正在困惑的童鞋... 开始先上图: 从Struts2的图可以看出当浏览器发出请求 ...

  5. 学习SpringMVC——拦截器

    拦截器,顾名思义就是用来拦截的. 那什么是拦截,又为什么要拦截.对于Spring MVC来说,拦截器主要的工作对象就是用户的请求,拦截下来之后,我们可以在拦截的各个阶段悉心呵护[为所欲为].常见的比如 ...

  6. alias拦截器的使用

    在SSH项目中,有时需要由一个Action跳转到另一个Action.有两种方式可以实现Action之间的跳转,一种是chain,另一种是redirectAction,这两种方式之间的区别是chain是 ...

  7. Struts2入门(二)——配置拦截器

    一.前言 之前便了解过,Struts 2的核心控制器是一个Filter过滤器,负责拦截所有的用户请求,当用户请求发送过来时,会去检测struts.xml是否存在这个action,如果存在,服务器便会自 ...

  8. 通过拦截器Interceptor实现Spring MVC中Controller接口访问信息的记录

    java web工程项目使用了Spring+Spring MVC+Hibernate的结构,在Controller中的方法都是用于处理前端的访问信息,Controller通过调用Service进行业务 ...

  9. spring 拦截器

    1.mvc.xml <!-- 自定义拦截链配置 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping p ...

  10. Struts2 拦截器配置以及实现

    @(Java ThirdParty)[Struts|Interceptor] Struts2 拦截器配置以及实现 Struts2的拦截器应用于Action,可以在执行Action的方法之前,之后或者两 ...

随机推荐

  1. ab基本用法

    ab的全称是ApacheBench,是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求.前段时间看到公司的开发人员也在 ...

  2. Python疑问系列

    最近在看python源码 ------点点滴滴做个记录. 预计要分的系列: 1. import 分析 2. 主要bytecode 分析 3. python启动分析 4. object对象分析 最后希望 ...

  3. Day20 Django之Model多对多、中间件、缓存、信号和分页

    一.Form补充 class IndexForm(forms.Form): # c = [ # (1, 'CEO'), # (2, 'CTO') # ] # 静态字段,属于IndexForm类,即使数 ...

  4. 也说说EM

    也说说EM [本文链接:http://www.cnblogs.com/breezedeus/archive/2012/08/12/2634466.html,转载请注明出处] 前几天看Andrew Ng ...

  5. DUILIB创建不规则窗体,自定义控件(很不错的几十篇文章)

    http://blog.csdn.net/harvic880925/article/details/8925650 http://blog.csdn.net/harvic880925/article/ ...

  6. Windows多桌面切换(CreateDesktop,SwitchDesktop函数)

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  7. 14.5.5.3 How to Minimize and Handle Deadlocks 如何减少和处理死锁

    14.5.5.3 How to Minimize and Handle Deadlocks 如何减少和处理死锁 这个部分建立在概念信息关于deadlocks 在章节 14.5.5.2, "D ...

  8. C++ 1

    1 new 建立一个堆对象 new 类名(初值列表) 返回一个指针 int * p=new int(3)动态分配 2 delete  释放指针 delete p; delete [] p ;释放动态申 ...

  9. Invitation Cards(邻接表+逆向建图+SPFA)

    Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 17538   Accepted: 5721 Description In ...

  10. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...