浅谈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 相关文章推荐
初探PHP5
Oct 09 PHP
php 变量未定义等错误的解决方法
Jan 12 PHP
php在程序中将网页生成word文档并提供下载的代码
Oct 09 PHP
PHP错误Warning:mysql_query()解决方法
Oct 24 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
Dec 18 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
Oct 10 PHP
详解PHP中的序列化、反序列化操作
Mar 21 PHP
php将html转为图片的实现方法
May 19 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
基于swoole实现多人聊天室
Jun 14 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
Oct 12 PHP
TP5框架安全机制实例分析
Apr 05 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
Zend公司全球首推PHP认证
2006/10/09 PHP
php ss7.5的数据调用 (笔记)
2010/03/08 PHP
关于PHP递归算法和应用方法介绍
2013/04/15 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
php实现的二分查找算法示例
2017/06/20 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
jQuery ajax serialize()方法的使用以及常见问题解决
2013/01/27 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
jQuery Ajax 全局调用封装实例代码详解
2016/06/02 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
javascript如何实现create方法
2019/11/04 Javascript
python切换hosts文件代码示例
2013/12/31 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
python使用tensorflow保存、加载和使用模型的方法
2018/01/31 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
2019/01/15 Python
Python中一般处理中文的几种方法
2019/03/06 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
2020/03/04 Python
浅谈matplotlib 绘制梯度下降求解过程
2020/07/12 Python
泰国在线书店:SE-ED
2020/06/21 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
工厂总经理岗位职责
2014/02/07 职场文书
幼儿园中班教学反思
2014/02/10 职场文书
聘任书模板
2014/03/29 职场文书
项目建议书范文
2014/05/12 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
JS ES6异步解决方案
2021/04/29 Javascript
Nginx禁止ip访问或非法域名访问
2022/04/07 Servers