博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP拦截器的使用(转)
阅读量:7072 次
发布时间:2019-06-28

本文共 1146 字,大约阅读时间需要 3 分钟。

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. }

转载地址:http://ctkml.baihongyu.com/

你可能感兴趣的文章
成为优秀Java程序员的10大技巧
查看>>
一个16年毕业生所经历的php面试
查看>>
AAC架构系列一(初识)
查看>>
react-native-echarts 在手机上 图表出现滚动条解决方法
查看>>
前端小白入门区块链系列01
查看>>
HyperLedger Fabric(超级账本) 入门实战
查看>>
Android自定义Toast
查看>>
JavaScript 函数式编程技巧 - 反柯里化
查看>>
一个简单高性能的Go router,和httprouter 差不多快,且支持正则
查看>>
网络数据抓取
查看>>
Hexo添加评论、阅读次数和分类/标签
查看>>
机器学习新手必看:Jupyter Notebook入门指南
查看>>
微信中的video属性设置
查看>>
JavaScript 笔记02
查看>>
新形式下触电新闻如何打造内容安全领域新标杆
查看>>
Hybrid App 开发实践总结
查看>>
学起来:Flutter将支持桌面应用开发
查看>>
Vue基础起步
查看>>
Go Web如何处理Web请求?
查看>>
ELK日志收集(一)-Elasticsearch安装
查看>>