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 相关文章推荐
如何过滤高亮显示非法字符
Oct 09 PHP
用PHP实现多服务器共享SESSION数据的方法
Mar 16 PHP
PHP4与PHP5的时间格式问题
Feb 17 PHP
PHP读取PDF内容配合Xpdf的使用
Nov 24 PHP
php 判断数组是几维数组
Mar 20 PHP
PHP不用递归遍历目录下所有文件的代码
Jul 04 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
Oct 24 PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 PHP
phpcms手机内容页面添加上一篇和下一篇
Jun 05 PHP
PHP里的单例类写法实例
Jun 25 PHP
WordPress中设置Post Type自定义文章类型的实例教程
May 10 PHP
老生常谈PHP面向对象之命令模式(必看篇)
May 24 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
杏林同学录(六)
2006/10/09 PHP
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
jQuery插件Tmpl的简单使用方法
2015/04/27 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
2016/05/30 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
javascript基础练习之翻转字符串与回文
2017/02/20 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
react redux入门示例
2018/04/19 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
vuex实现及简略解析(小结)
2019/03/01 Javascript
TypeScript之调用栈的实现
2019/12/31 Javascript
Element PageHeader页头的使用方法
2020/07/26 Javascript
Python入门篇之函数
2014/10/20 Python
Python正则获取、过滤或者替换HTML标签的方法
2016/01/28 Python
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
python中调试或排错的五种方法示例
2019/09/12 Python
如何关掉pycharm中的python console(图解)
2019/10/31 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
Python猜数字算法题详解
2020/03/01 Python
python调用摄像头的示例代码
2020/09/28 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
2013届毕业生求职信范文
2013/11/20 职场文书
公司周年庆典邀请函
2014/01/12 职场文书
小摄影师教学反思
2014/04/27 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
成绩单评语
2015/01/04 职场文书
2016银行招聘自荐信
2016/01/28 职场文书
在JavaScript中如何使用宏详解
2021/05/06 Javascript
Python如何配置环境变量详解
2021/05/18 Python
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python