浅谈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中全局变量global的使用演示代码
May 18 PHP
用PHP写的基于Memcache的Queue实现代码
Nov 27 PHP
php中判断文件存在是用file_exists还是is_file的整理
Sep 12 PHP
利用php获取服务器时间的实现代码
Jun 07 PHP
php中的strpos使用示例
Feb 27 PHP
PHP引用(&amp;)各种使用方法实例详解
Mar 20 PHP
PHP封装分页函数实现文本分页和数字分页
Oct 23 PHP
php使用sql server验证连接数据库的方法
Dec 25 PHP
PHP实现的浏览器检查类
Apr 11 PHP
学习PHP session的传递方式
Jun 15 PHP
php 数组处理函数extract详解及实例代码
Nov 23 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
Oct 16 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依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
php数组键值用法实例分析
2015/02/27 PHP
PHP图形计数器程序显示网站用户浏览量
2016/07/20 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
firefox中JS读取XML文件
2006/12/21 Javascript
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
js字母大小写转换实现方法总结
2013/11/13 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
javascript的BOM
2016/05/03 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
Angular4自制一个市县二级联动组件示例
2017/11/21 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
Python的Django框架中从url中捕捉文本的方法
2015/07/20 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
2017/11/23 Python
python如何读写json数据
2018/03/21 Python
python读取视频流提取视频帧的两种方法
2020/10/22 Python
python人民币小写转大写辅助工具
2018/06/20 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
Python画图实现同一结点多个柱状图的示例
2019/07/07 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
2021/02/18 Python
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
订货会主持词
2015/07/01 职场文书
2016年元旦主持词
2015/07/06 职场文书
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL