浅谈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 相关文章推荐
第1次亲密接触PHP5(1)
Oct 09 PHP
PHP 全角转半角实现代码
May 16 PHP
浅析php中三个等号(===)和两个等号(==)的区别
Aug 06 PHP
php socket客户端及服务器端应用实例
Jul 04 PHP
php操作xml入门之cdata区段
Jan 23 PHP
php使用cookie显示用户上次访问网站日期的方法
Jan 26 PHP
php计算税后工资的方法
Jul 28 PHP
详解PHP数组赋值方法
Nov 07 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
Nov 15 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 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数据库抽象层 PDO
2011/05/07 PHP
Laravel 5 框架入门(四)完结篇
2015/04/09 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
Javascript this 的一些学习总结
2012/08/31 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
js Math 对象的方法
2013/09/01 Javascript
JavaScript splice()方法详解
2020/09/22 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
JS面向对象编程详解
2016/03/06 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
JS简单实现点击复制链接的方法
2016/08/03 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
jQuery实现消息弹出框效果
2019/12/10 jQuery
十分钟教你上手ES2020新特性
2020/02/12 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
Python socket编程实例详解
2015/05/27 Python
Python制作词云的方法
2018/01/03 Python
详解Python sys.argv使用方法
2019/05/10 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
Pytorch中膨胀卷积的用法详解
2020/01/07 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
使用css3背景渐变中的透明度来设置不同颜色的背景渐变
2014/03/31 HTML / CSS
语文复习计划
2015/01/19 职场文书
离婚纠纷代理词
2015/05/23 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
python数据分析之用sklearn预测糖尿病
2021/04/22 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
2021/05/25 Python