浅谈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 相关文章推荐
Snoopy类使用小例子
Apr 15 PHP
一步一步学习PHP(5) 类和对象
Feb 16 PHP
细谈php中SQL注入攻击与XSS攻击
Jun 10 PHP
PHP常用的排序和查找算法
Aug 06 PHP
php htmlentities()函数的定义和用法
May 13 PHP
CI框架支持$_GET的两种实现方法
May 18 PHP
再谈PHP中单双引号的区别详解
Jun 12 PHP
ThinkPHP打水印及设置水印位置的方法
Oct 14 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
Laravel框架实现利用中间件进行操作日志记录功能
Jun 06 PHP
PHP按一定比例压缩图片的方法
Oct 12 PHP
关于php unset对json_encode的影响详解
Nov 14 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实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
PHP实现简单实用的分页类代码
2016/04/08 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
JavaScript 动态生成方法的例子
2009/07/22 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
2016/04/17 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
layDate日期控件使用方法详解
2018/11/15 Javascript
vue实现记事本功能
2019/06/26 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
2020/01/21 Javascript
如何阻止移动端浏览器点击图片浏览
2020/08/29 Javascript
浅析Python编写函数装饰器
2016/03/18 Python
python中的print()输出
2019/04/12 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
如何获取Python简单for循环索引
2019/11/21 Python
django实现日志按日期分割
2020/05/21 Python
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
HTML5 Canvas 实现K线图的示例代码
2019/12/23 HTML / CSS
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
宝宝周岁宴答谢词
2014/01/26 职场文书
大学三年计划书范文
2014/04/30 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
工资证明格式模板
2015/06/12 职场文书
初中团委工作总结
2015/08/13 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
一条慢SQL语句引发的改造之路
2022/03/16 MySQL