浅谈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 相关文章推荐
Access数据库导入Mysql的方法之一
Oct 09 PHP
PHP5新特性: 更加面向对象化的PHP
Nov 18 PHP
谈谈PHP的输入输出流
Feb 14 PHP
深入PHP获取随机数字和字母的方法详解
Jun 06 PHP
php中sql注入漏洞示例 sql注入漏洞修复
Jan 24 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
May 19 PHP
php打印输出棋盘的实现方法
Dec 23 PHP
CodeIgniter与PHP5.6的兼容问题
Jul 16 PHP
php 自定义错误日志实例详解
Nov 12 PHP
php面向对象之反射功能与用法分析
Mar 29 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
php png失真的原因及解决办法
Nov 17 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
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
2013/06/17 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
Ajax+PHP实现的删除数据功能示例
2019/02/12 PHP
读jQuery之十三 添加事件和删除事件的核心方法
2011/08/23 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
让复选框只能选择一项的方法
2013/10/08 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
Bootstrap表单使用方法详解
2017/02/17 Javascript
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
Vue-router 中hash模式和history模式的区别
2018/07/24 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
2018/08/27 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
python 19个值得学习的编程技巧
2020/08/15 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
餐饮业的创业计划书范文
2013/12/26 职场文书
投资意向书范本
2014/04/01 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
面试感谢信范文
2015/01/22 职场文书
保研推荐信格式
2015/03/25 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
校园安全教育心得体会
2016/01/15 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
倡议书怎么写?
2019/04/11 职场文书
代码复现python目标检测yolo3详解预测
2022/05/06 Python
vue如何清除浏览器历史栈
2022/05/25 Vue.js