浅谈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如何编写易读的代码
Jul 10 PHP
php防盗链的常用方法小结
Jul 02 PHP
百度站点地图(百度sitemap)生成方法分享
Jan 09 PHP
PHP实现数字补零功能的2个函数介绍
May 12 PHP
php格式化时间戳显示友好的时间实现思路及代码
Oct 23 PHP
PHP文件读写操作相关函数总结
Nov 18 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
PHP时间类完整实例(非常实用)
Dec 25 PHP
php中namespace及use用法分析
Dec 06 PHP
curl 出现错误的调试方法(必看)
Feb 13 PHP
PHP简单实现遍历目录下特定文件的方法小结
May 22 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下使用curl模拟用户登陆的代码
2010/09/10 PHP
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
Laravel基础_关于view共享数据的示例讲解
2019/10/14 PHP
禁止空格提交表单的js代码
2013/11/17 Javascript
jQuery中get和post方法传值测试及注意事项
2014/08/08 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
JavaScript中的ParseInt(&quot;08&quot;)和“09”返回0的原因分析及解决办法
2016/05/19 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
js转换对象为xml
2017/02/17 Javascript
js鼠标移动时禁止选中文字
2017/02/19 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
vue中keep-alive组件的入门使用教程
2019/06/06 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
2020/06/04 Javascript
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
详解Python用户登录接口的方法
2019/04/17 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
Django如何重置migration的几种情景
2021/02/24 Python
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
单位门卫岗位职责
2013/12/20 职场文书
薪酬专员岗位职责
2014/02/18 职场文书
厂区绿化方案
2014/05/08 职场文书
农村党建工作汇报材料
2014/10/27 职场文书
大学生学期个人总结
2015/02/12 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
go设置多个GOPATH的方式
2021/05/05 Golang
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
centos8安装MongoDB的详细过程
2021/10/24 MongoDB