php适配器模式简单应用示例


Posted in PHP onOctober 23, 2019

本文实例讲述了php适配器模式简单应用。分享给大家供大家参考,具体如下:

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

示例:

//假设使用php开发了一个天气接口
class Weather{
  public static function show(){
    $info = array(
      'temperature' => '25°C',
      'wind' => '西北风3~4级',
      'weather' => '晴',
      'PM2.5' => 60
    );
    return serialize($info);
  }
}
//PHP客户端调用
$msg = Weather::show();
$msg_arr = unserialize($msg);
echo $msg_arr['weather'];
//这时,如果java、python也要来调用天气接口,
//但是不识别串行化后的字符串,但是又不能修改旧接口和旧php的调用
//这时候可以用一个新的类继承,也就是适配器模式,来修改返回的数据格式为json
class WeatherAdapter extends Weather{
  public static function show(){
    $info = parent::show();
    $info_arr = unserialize($info);
    return json_encode($info_arr);
  }
} 
//java、python就可以使用返回的json进行使用
$msg = WeatherAdapter::show();

运行结果:

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
一个目录遍历函数
Oct 09 PHP
详解:――如何将图片储存在数据库里
Dec 05 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
Jul 01 PHP
简单实用的.net DataTable导出Execl
Oct 28 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
Nov 18 PHP
php使用指定编码导出mysql数据到csv文件的方法
Mar 31 PHP
php实现网站顶踩功能的完整前端代码
Jul 19 PHP
大家在抢红包,程序员在研究红包算法
Aug 31 PHP
详解WordPress开发中get_header()获取头部函数的用法
Jan 08 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
Apr 17 PHP
Laravel框架实现redis集群的方法分析
Sep 14 PHP
PHP删除字符串中非字母数字字符方法总结
Jan 20 PHP
Laravel 自定命令以及生成文件的例子
Oct 23 #PHP
laravel 创建命令行命令的图文教程
Oct 23 #PHP
php桥接模式应用案例分析
Oct 23 #PHP
浅谈laravel框架与thinkPHP框架的区别
Oct 23 #PHP
Laravel 解决composer相关操作提示php相关异常的问题
Oct 23 #PHP
基于laravel缓冲cache的用法详解
Oct 23 #PHP
PHP实现简单登录界面
Oct 23 #PHP
You might like
用PHP连mysql和oracle数据库性能比较
2006/10/09 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
php include和require的区别深入解析
2013/06/17 PHP
php提交post数组参数实例分析
2015/12/17 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
js表格分页实现代码
2009/09/18 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
jQuery短信验证倒计时功能实现方法详解
2016/05/25 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
js中url对象化管理分析
2017/12/29 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
2019/01/08 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
[07:37]DOTA2-DPC中国联赛2月2日Recap集锦
2021/03/11 DOTA
python列表操作使用示例分享
2014/02/21 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
2018/01/29 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
python使用递归的方式建立二叉树
2019/07/03 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
俄罗斯名牌服装网上商店:UNIQUE FABRIC
2019/07/25 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
写给老师的表扬信
2014/01/21 职场文书
服务承诺口号
2014/05/22 职场文书
Win11 Build 25179预览版发布(附更新内容+ISO官方镜像下载)
2022/08/14 数码科技