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 && 逻辑与运算符使用说明
Mar 04 PHP
PHP扩展编写点滴 技巧收集
Mar 09 PHP
你可能不知道PHP get_meta_tags()函数
May 12 PHP
ThinkPHP实现事务回滚示例代码
Jun 23 PHP
Yii框架中memcache用法实例
Dec 03 PHP
php模拟服务器实现autoindex效果的方法
Mar 10 PHP
PHP版微信公众平台红包API
Apr 02 PHP
php实现多城市切换特效
Aug 09 PHP
PHP使用SOAP扩展实现WebService的方法
Apr 01 PHP
php实现评论回复删除功能
May 23 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
Aug 12 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笔记之:文章中图片处理的使用
2013/04/26 PHP
PHP简单创建压缩图的方法
2016/08/24 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
JS 判断undefined的实现代码
2009/11/26 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
javascript 面向对象实战思想分享
2017/09/07 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
Python魔法方法详解
2019/02/13 Python
python每天定时运行某程序代码
2019/08/16 Python
Django自带的加密算法及加密模块详解
2019/12/03 Python
Django更新models数据库结构步骤
2020/04/01 Python
python实现AHP算法的方法实例(层次分析法)
2020/09/09 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
了解AppleTalk协议吗
2014/04/01 面试题
金士达面试非笔试
2012/03/14 面试题
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
广告学专业毕业生自荐信
2013/09/24 职场文书
教育学专业毕业生的自我评价
2013/11/21 职场文书
商务考察邀请函范文
2014/01/21 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
家长会开场白和结束语
2015/05/29 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python
一文带你探究MySQL中的NULL
2021/11/11 MySQL
MySQL 原理与优化之Update 优化
2022/08/14 MySQL