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 相关文章推荐
PHP的开发框架的现状和展望
Mar 16 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
PHP获取当前页面URL函数实例
Oct 22 PHP
smarty模板引擎中自定义函数的方法
Jan 22 PHP
Windows7下的php环境配置教程
Feb 28 PHP
Yii数据库缓存实例分析
Mar 29 PHP
PHP+Ajax验证码验证用户登录
Jul 20 PHP
PHP中文字符串截断无乱码解决方法
Oct 10 PHP
ThinkPHP框架表单验证操作方法
Jul 19 PHP
php fread函数使用方法总结
May 28 PHP
详解PHP用mb_string处理windows中文字符
May 26 PHP
php解析非标准json、非规范json的方式实例
May 10 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 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
php输出表格的实现代码(修正版)
2010/12/29 PHP
php画图实例
2014/11/05 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
javascript 实现字符串反转的三种方法
2013/11/23 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
Bootstrap零基础入门教程(三)
2016/07/18 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
Vue加载组件、动态加载组件的几种方式
2018/08/31 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
ElementUI Tree 树形控件的使用并给节点添加图标
2020/02/27 Javascript
python获取指定网页上所有超链接的方法
2015/04/04 Python
Python中的模块导入和读取键盘输入的方法
2015/10/16 Python
Python 内置函数complex详解
2016/10/23 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
Python 实现训练集、测试集随机划分
2020/01/08 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
澳大利亚相机之家:Camera House
2017/11/30 全球购物
网络管理员岗位职责
2014/03/17 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
司机工作自我鉴定
2014/09/19 职场文书
初中中等生评语
2014/12/29 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
小学音乐课教学反思
2016/02/18 职场文书
mysql查找连续出现n次以上的数字
2022/05/11 MySQL
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android