浅谈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 相关文章推荐
在PHP3中实现SESSION的功能(二)
Oct 09 PHP
php中模拟POST传递数据的两种方法分享
Sep 16 PHP
CI框架源码阅读,系统常量文件constants.php的配置
Feb 28 PHP
关于PHP语言构造器介绍
Jul 08 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
Jun 29 PHP
PHP中unset,array_splice删除数组中元素的区别
Jul 28 PHP
浅谈php和.net的区别
Sep 28 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
PHP用PDO如何封装简单易用的DB类详解
Jul 30 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
Jan 07 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
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
Yii使用migrate命令执行sql语句的方法
2016/03/15 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
JS 去前后空格大全(IE9亲测)
2013/07/15 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
详解Python发送邮件实例
2016/01/10 Python
Python中getpass模块无回显输入源码解析
2018/01/11 Python
Python编程中NotImplementedError的使用方法
2018/04/21 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
Python Pandas 箱线图的实现
2019/07/23 Python
Python3获取cookie常用三种方案
2020/10/05 Python
python中append函数用法讲解
2020/12/11 Python
浅谈html5增强的页面元素
2016/06/14 HTML / CSS
工程造价专业大学生职业生涯规划书
2014/01/18 职场文书
《第一朵杏花》教学反思
2014/04/16 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
公司门卫岗位职责
2015/04/13 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
上甘岭观后感
2015/06/10 职场文书
六一儿童节新闻稿
2015/07/17 职场文书
迎国庆主题班会
2015/08/17 职场文书
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers