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 相关文章推荐
phplock(php进程锁) v1.0 beta1
Nov 24 PHP
PHP 实用代码收集
Jan 22 PHP
php下用cookie统计用户访问网页次数的代码
May 09 PHP
PHP编译安装时常见错误解决办法
May 28 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
详解PHP的Yii框架中日志的相关配置及使用
Dec 08 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
ZendFramework框架实现连接两个或多个数据库的方法
Dec 08 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
Aug 07 PHP
PHP正则表达式笔记与实例详解
May 09 PHP
php远程请求CURL案例(爬虫、保存登录状态)
Apr 01 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循环table实现一行两列显示的方法
2015/06/04 PHP
php析构函数的简单使用说明
2015/08/24 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
JQuery常用选择器功能与用法实例分析
2019/12/23 jQuery
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
对于Python装饰器使用的一些建议
2015/06/03 Python
python根据京东商品url获取产品价格
2015/08/09 Python
Python生成随机验证码的两种方法
2015/12/22 Python
Python实现变量数值交换及判断数组是否含有某个元素的方法
2017/09/18 Python
python tensorflow学习之识别单张图片的实现的示例
2018/02/09 Python
Django实现全文检索的方法(支持中文)
2018/05/14 Python
python实现飞机大战
2018/09/11 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
Python简单实现区域生长方式
2020/01/16 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
高中生学习生活的自我评价
2013/10/09 职场文书
宿舍卫生检讨书
2014/01/16 职场文书
企业总经理岗位职责
2014/02/13 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
2019年鼓励无偿献血倡议书
2019/09/17 职场文书
Python如何把不同类型数据的json序列化
2021/04/30 Python
Java实现简单小画板
2022/06/10 Java/Android