浅谈PHP拦截器之__set()与__get()的理解与使用方法


Posted in PHP onOctober 18, 2016

“一般来说,总是把类的属性定义为private,这更符合现实的逻辑。

但是,对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数“__get()”和“__set()”来获取和赋值其属性,以及检查属性的“__isset()”和删除属性的方法“__unset()”。

我们为每个属性做了设置和获取的方法,在PHP5中给我们提供了专门为属性设置值和获取值的方法,“__set()”和“__get()”这两个方法,这两个方法不是默认存在的,而是我们手工添加到类里面去的,像构造方法(__construct())一样,类里面添加了才会存在,可以按下面的方式来添加这两个方法,当然也可以按个人的风格来添加:“

<?php
//拦截器的使用
class Computer{
private $name;
private $price;
private $cpu;
private $clocked;

//拦截器之赋值
public function __set($key,$value){
//那么:$key=name $value="联想" 则有: $this->name="联想"
return $this->$key=$value;
}

//拦截器之取值
public function __get($key){
if (isset($key)){
//那么: $key=name 则$this->name 所以自然就return了"联想"
return $this->$key;
}else {
return NULL;
}
}
}
//正是因为的拦截器存在,才能如此用
$computer=new Computer();
$computer->name="联想";
$computer->price=5600;
$computer->cpu="八核";
$computer->clocked="1600hz";

echo $computer->name;
echo $computer->price;
echo $computer->cpu;
echo $computer->clocked;

以上就是小编为大家带来的浅谈PHP拦截器之__set()与__get()的理解与使用方法全部内容了,希望大家多多支持三水点靠木~

PHP 相关文章推荐
php zend 相对路径问题
Jan 12 PHP
PHP 年龄计算函数(精确到天)
Jun 07 PHP
php实现将字符串按照指定距离进行分割的方法
Mar 14 PHP
php修改文件上传限制方法汇总
Apr 07 PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 PHP
Yii清理缓存的方法
Jan 06 PHP
PHP常见漏洞攻击分析
Feb 21 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
PHP htmlentities()函数用法讲解
Feb 25 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
Mar 08 PHP
PHP判断一个变量是否为整数、正整数的方法示例
Sep 11 PHP
thinkPHP+LayUI 流加载实现功能
Sep 27 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 #PHP
Yii针对添加行的增删改查操作示例
Oct 18 #PHP
Yii遍历行下每列数据的方法
Oct 17 #PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
Oct 17 #PHP
php实现跨域提交form表单的方法【2种方法】
Oct 17 #PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
Oct 17 #PHP
详解PHP原生DOM对象操作XML的方法
Oct 17 #PHP
You might like
人大复印资料处理程序_补充篇
2006/10/09 PHP
PHP 文件上传源码分析(RFC1867)
2009/10/30 PHP
PHP setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
PHP判断是否为空的几个函数对比
2015/04/21 PHP
PHP判断手机是IOS还是Android
2015/12/09 PHP
php模拟post上传图片实现代码
2016/06/24 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
微信小程序 出现错误:{&quot;baseresponse&quot;:{&quot;errcode&quot;:-80002,&quot;errmsg&quot;:&quot;&quot;}}解决办法
2017/02/23 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
2017/04/22 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
微信小程序实现下载进度条的方法
2017/12/08 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
微信小程序提交form操作示例
2018/12/30 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
微信小程序实现底部弹出模态框
2020/11/18 Javascript
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
Python箱型图处理离群点的例子
2019/12/09 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
优秀学生事迹材料
2014/02/08 职场文书
采购经理岗位职责
2014/02/16 职场文书
补充协议书范本
2014/04/23 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
新闻报道稿范文
2015/07/23 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
2016入党积极分子考察评语
2015/12/01 职场文书
python缺失值的解决方法总结
2021/06/09 Python
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS