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 相关文章推荐
打造计数器DIY三步曲(下)
Oct 09 PHP
杏林同学录(六)
Oct 09 PHP
php sprintf()函数让你的sql操作更安全
Jul 23 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
php实现求相对时间函数
Jun 15 PHP
PHP表单数据写入MySQL数据库的代码
May 31 PHP
微信随机生成红包金额算法php版
Jul 21 PHP
简单解决微信文章图片防盗链问题
Dec 17 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
Feb 08 PHP
实例讲解PHP页面静态化
Feb 05 PHP
PHP中非常有用却鲜有人知的函数集锦
Aug 17 PHP
php让json_encode不自动转义斜杠“/”的方法
Apr 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生成带有雪花背景的验证码
2008/09/28 PHP
php面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
php中设置多级目录session的问题
2011/08/08 PHP
php+js iframe实现上传头像界面无跳转
2014/04/29 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
google地图的路线实现代码
2009/08/20 Javascript
jQuery 方法大全方便学习参考
2010/02/25 Javascript
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
2017/04/12 Javascript
Vue.js 中的 $watch使用方法
2017/05/25 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
在vue项目中正确使用iconfont的方法
2018/09/28 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
基于JavaScript实现简单扫雷游戏
2021/01/02 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
python计算最小优先级队列代码分享
2013/12/18 Python
Python中的zip函数使用示例
2015/01/29 Python
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
深入理解Python中变量赋值的问题
2017/01/12 Python
详解Python基础random模块随机数的生成
2019/03/23 Python
python实现数据分析与建模
2019/07/11 Python
Python实现K折交叉验证法的方法步骤
2019/07/11 Python
Tensorflow 多线程设置方式
2020/02/06 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
2018/09/19 HTML / CSS
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
我爱我的祖国演讲稿
2014/05/04 职场文书
解除租房协议书
2014/12/03 职场文书
老龙头导游词
2015/02/11 职场文书