浅谈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 执行系统命令的方法
Jul 07 PHP
Google Voice 短信发送接口PHP开源版(2010.5更新)
Jul 22 PHP
ThinkPHP的I方法使用详解
Jun 18 PHP
PHP实现Soap通讯的方法
Nov 03 PHP
php单例模式示例分享
Feb 12 PHP
PHP QRCODE生成彩色二维码的方法
May 19 PHP
详解php用curl调用接口方法,get和post两种方式
Jan 13 PHP
CI(CodeIgniter)框架实现图片上传的方法
Mar 24 PHP
Laravel中服务提供者和门面模式的入门介绍
Nov 06 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 PHP
PHP实现数组和对象的相互转换操作示例
Mar 20 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
Apr 13 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
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
基于initPHP的框架介绍
2013/04/18 PHP
PHP中::、-&amp;gt;、self、$this几种操作符的区别介绍
2013/04/24 PHP
php中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
详解PHP字符串替换str_replace()函数四种用法
2017/10/13 PHP
Jquery实现搜索框提示功能示例代码
2013/08/13 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
原生js仿jquery一些常用方法(必看篇)
2016/09/20 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
Vuejs 单文件组件实例详解
2018/02/09 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
[53:20]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 VG vs OG
2018/04/03 DOTA
Python的Django框架安装全攻略
2015/07/15 Python
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
分享6个隐藏的python功能
2017/12/07 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
对Python w和w+权限的区别详解
2019/01/23 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
一文了解python 3 字符串格式化 F-string 用法
2020/03/04 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
Ralph Lauren意大利官方网站:时尚界最负盛名的品牌之一
2018/10/18 全球购物
应届生幼儿园求职信
2013/11/12 职场文书
计算机专业优秀大学生自我总结
2014/01/21 职场文书
模具设计与制造专业自荐书
2014/07/01 职场文书
逃课打麻将检讨书
2014/10/05 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript