zoukankan      html  css  js  c++  java
  • 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. }
  • 相关阅读:
    toPrimitive方法使用
    使用js导入Excel数据,转化为json,导出指定json,合并单元格为excel
    vue-router基本使用
    json另类使用
    z-index无效情况
    构造函数另类使用。
    在worker中使用offscreenCanvas
    使用git提交代码一条龙
    IntelliJ IDEA使用技巧一览表
    Android studio 常用快捷键
  • 原文地址:https://www.cnblogs.com/xingmeng/p/3248612.html
Copyright © 2011-2022 走看看