php类中的各种拦截器用法分析


Posted in PHP onNovember 03, 2014

本文实例讲述了php类中的各种拦截器用法。分享给大家供大家参考。具体用法分析如下:

1、__get( $property ) 访问未定义的属性时调用

class lanjie  

{  

    function __get($name)  

    {  

        echo $name." property not found! ";  

    }  

} 
$ob = new lanjie();  

echo $ob->g;

当我们调用对象$ob未定义的属性g时,调用拦截器__get()方法,输出"g property not found!”;

2、__set( $property , $value ) 给未定义的属性调用时赋值

class person  

{  

    private $_age;  

    private $_name;  

    function __set($name, $value)  

    {  

        $method = "set".  ucfirst($name);  

        echo $method;  

        if(method_exists($this, $method) )  

        {  

            return $this->$method( $value );  

        }  

    }  

      

    function setName( $name )  

    {  

        $this->_name = $name;  

        if( !is_null($this->_name) )  

        {  

            $this->_name = strtoupper($this->_name);  

        }  

    }  

    function setAge( $age )  

    {  

        return $this->_age = (int)$age;  

    }  

}  

  

$p = new person();  

$p->name = 'bob';  

print_r( array( $p ) );

这里我们可以很清楚的看到 , 当给未定义的'name'赋值时 ,  会调用"__set()”

其他的还有 __call(), __isset() , __unset();
这里最有用和最常用的的是__call() , 当调用一个为存在的方法时被调用; __isset()是在对一个为定义的属性使用isset()函数时被调用, __unset是在对未定义的数以使用unset时被调用

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 和 COM
Oct 09 PHP
加速XP搜索功能堪比vista
Mar 22 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
Feb 22 PHP
PHP使用CURL获取302跳转后的地址实例
May 04 PHP
PHP中使用CURL获取页面title例子
Jan 07 PHP
PHP使用适合阅读的格式显示文件大小的方法
Mar 05 PHP
PHP简单生成缩略图相册的方法
Jul 29 PHP
PHP概率计算函数汇总
Sep 13 PHP
Yii2.0表关联查询实例分析
Jul 18 PHP
POST一个JSON格式的数据给Restful服务实例详解
Apr 07 PHP
tp5.1 框架数据库-数据集操作实例分析
May 26 PHP
php将xml转化对象的实例详解
Nov 17 PHP
PHP类的反射用法实例
Nov 03 #PHP
php之curl设置超时实例
Nov 03 #PHP
PHP中使用addslashes函数转义的安全性原理分析
Nov 03 #PHP
php中$_GET与$_POST过滤sql注入的方法
Nov 03 #PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
Nov 03 #PHP
php防止sql注入之过滤分页参数实例
Nov 03 #PHP
详解PHP导入导出CSV文件
Nov 03 #PHP
You might like
php IP转换整形(ip2long)的详解
2013/06/06 PHP
基于empty函数的判断详解
2013/06/17 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
2020/08/12 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
Python制作数据导入导出工具
2015/07/31 Python
详解python 拆包可迭代数据如tuple, list
2017/12/29 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
Python打印输出数组中全部元素
2018/03/13 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
python实现顺时针打印矩阵
2019/03/02 Python
python三方库之requests的快速上手
2019/03/04 Python
pycharm设置当前工作目录的操作(working directory)
2020/02/14 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
文职个人求职信范文
2013/09/23 职场文书
回门宴新郎答谢词
2014/01/12 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
出国留学计划书
2014/04/27 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
2015年学校总务工作总结
2015/07/20 职场文书
Apache Calcite 实现方言转换的代码
2021/04/24 Servers
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏