浅谈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中session的实现原理以及大网站应用应注意的问题
Jun 17 PHP
php使用异或实现的加密解密实例
Sep 04 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
Jun 12 PHP
php返回相对时间(如:20分钟前,3天前)的方法
Apr 14 PHP
隐性调用php程序的方法
Jun 13 PHP
PHP7正式版测试,性能惊艳!
Dec 08 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
PHP实现的ID混淆算法类与用法示例
Aug 10 PHP
PHP使用mongoclient简单操作mongodb数据库示例
Feb 08 PHP
php面向对象基础详解【星际争霸游戏案例】
Jan 23 PHP
如何解决php-fpm启动不了问题
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
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
更正确的asp冒泡排序
2007/05/24 Javascript
js类中的公有变量和私有变量
2008/07/24 Javascript
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
jquery取消选择select下拉框示例代码
2014/02/22 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
bootstrap组件之导航组件使用方法
2017/01/19 Javascript
node.js中debug模块的简单介绍与使用
2017/04/25 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
python实现图书管理系统
2018/03/12 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
python 解压pkl文件的方法
2018/10/25 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
2020/01/16 Python
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
高中微机老师自我鉴定
2014/02/16 职场文书
公司接待方案
2014/03/08 职场文书
农村婚礼主持词
2014/03/13 职场文书
校庆口号
2014/06/20 职场文书
2015年试用期工作总结
2014/12/12 职场文书
董事长岗位职责
2015/02/13 职场文书
同意报考公务员证明
2015/06/17 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
只用20行Python代码实现屏幕录制功能
2021/06/02 Python
分析Netty直接内存原理及应用
2021/06/14 Java/Android
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技