浅谈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之第九天
Oct 09 PHP
php网页后退不再出现过期
Mar 08 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
Feb 08 PHP
php 生成自动创建文件夹并上传文件的示例代码
Mar 07 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
Jun 30 PHP
php调整服务器时间的方法
Apr 03 PHP
百度地图API使用方法详解
Aug 25 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
Dec 08 PHP
Zend Framework自定义Helper类相关注意事项总结
Mar 14 PHP
详解如何在云服务器上部署Laravel
Jun 30 PHP
PHP实现二维数组中的查找算法小结
Jun 09 PHP
php获取小程序码的实现代码(B类接口)
Jun 13 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
php生成QRcode实例
2014/09/22 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
2019/09/30 PHP
js 内存释放问题
2010/04/25 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
jquery实现拖动效果
2016/08/10 Javascript
bootstrap table小案例
2016/10/21 Javascript
Bootstrap模态框插件使用详解
2017/05/11 Javascript
深入理解vue.js中的v-if和v-show
2017/06/22 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
javascript中正则表达式语法详解
2020/08/07 Javascript
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
全方位了解CSS3的Regions扩展
2015/08/07 HTML / CSS
墨西哥巴士车票在线购买:ClickBus
2018/03/27 全球购物
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
师范毕业生个人求职信
2013/12/09 职场文书
党校培训思想汇报
2014/01/03 职场文书
感恩小明星事迹材料
2014/05/23 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书
利用uni-app生成微信小程序的踩坑记录
2022/04/05 Javascript