• PHP拦截器的使用(转)


    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.  
      9. // 若给一个未定义的属性设置值,则将调用set{$property}对应的方法
      10. function __set($property, $value){
      11. $method ="set{$property}";
      12. if(method_exists($this, $method)){
      13. return $this->$method($value);
      14. }
      15. }
      16. // 若用户对未定义的属性调用isset方法,
      17. function __isset($property){
      18. $method ="isset{$property}";
      19. if(method_exists($this, $method)){
      20. return $this->$method();
      21. }
      22. }
      23. // 若用户对未定义的属性调用unset方法,
      24. // 则认为调用对应的unset{$property}方法
      25. function __unset($property){
      26. $method ="unset{$property}";
      27. if(method_exists($this, $method)){
      28. return $this->$method();
      29. }
      30. }
      31. function __call($method, $arg_array){
      32. if(substr($method,0,3)=="get"){
      33. $property = substr($method,3);
      34. $property = strtolower(substr($property,0,1)).substr($property,1);
      35. return $this->$property;
      36. }
      37. }
  • 相关阅读:
    sdut3664顺序表应用7:最大子段和之分治递归法
    循环并行执行
    c# 计算语句执行时间
    npm install g cordovares出现异常Failed at the sharp@0.29.3 install script.
    ionic tab页再次进入不会初始化组件调用ngOnInit
    sql 分组后取第一条数据
    OOM 问题分类
    MyBatis的一级缓存和二级缓存
    SpringBoot常用注解
    Eclipse/MAT下载过慢的问题
  • 原文地址:https://www.cnblogs.com/xingmeng/p/3248612.html
Copyright © 2020-2023  润新知