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 相关文章推荐
很实用的一个完整email发送程序
Oct 09 PHP
PHP 文件上传源码分析(RFC1867)
Oct 30 PHP
PHP类的使用 实例代码讲解
Dec 28 PHP
PHP学习笔记 IIS7下安装配置php环境
Oct 29 PHP
php 获取本地IP代码
Jun 23 PHP
php实现过滤表单提交中html标签的方法
Oct 17 PHP
php数组操作之键名比较与差集、交集赋值的方法
Nov 10 PHP
php array_merge函数使用需要注意的一个问题
Mar 30 PHP
使用Composer安装Yii框架的方法
Mar 15 PHP
浅谈PHP的反射API
Feb 26 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
Mar 14 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 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数组无限分级数据的层级化处理代码
2012/12/29 PHP
ThinkPHP 404页面的设置方法
2015/01/14 PHP
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
jquery移动节点实例
2015/01/14 Javascript
JavaScript中的replace()方法使用详解
2015/06/06 Javascript
jquery仿百度百科底部浮动导航特效
2015/08/08 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
AngularJS获取json数据的方法详解
2017/05/27 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
详解extract-text-webpack-plugin 的使用及安装
2018/06/12 Javascript
JavaScript类数组对象转换为数组对象的方法实例分析
2018/07/24 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
Vue-component全局注册实例
2018/09/06 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
PyTorch加载自己的数据集实例详解
2020/03/18 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
韩国11街:11STREET
2018/03/27 全球购物
工作决心书范文
2014/03/11 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
行政文员岗位职责
2015/02/04 职场文书
领导新年致辞2016
2015/07/29 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
Python移位密码、仿射变换解密实例代码
2021/06/27 Python