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 a simple smtp class
Nov 26 PHP
php 异常处理实现代码
Mar 10 PHP
利用PHP+JS实现搜索自动提示(实例)
Jun 09 PHP
php使用qr生成二维码的示例分享
Jan 20 PHP
php判断手机访问还是电脑访问示例分享
Jan 20 PHP
PHP中多维数组的foreach遍历示例
Jun 13 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
Aug 20 PHP
php批量删除超链接的实现方法
Oct 19 PHP
PHP设计模式之工厂模式详解
Oct 24 PHP
Phpstorm+Xdebug断点调试PHP的方法
May 14 PHP
PHP7内核CGI与FastCGI详解
Apr 14 PHP
PHP命名空间(namespace)原理与用法详解
Dec 11 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
BBS(php & mysql)完整版(二)
2006/10/09 PHP
php图片的裁剪与缩放生成符合需求的缩略图
2013/01/11 PHP
php操作XML、读取数据和写入数据的实现代码
2014/08/15 PHP
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
2019/10/17 PHP
JavaScript类的写法
2016/09/17 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
JS中Object对象的原型概念基础
2018/01/29 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
sqlalchemy对象转dict的示例
2014/04/22 Python
Python实现partial改变方法默认参数
2014/08/18 Python
用python实现面向对像的ASP程序实例
2014/11/10 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
Django 缓存配置Redis使用详解
2019/07/23 Python
简单了解django orm中介模型
2019/07/30 Python
Python配置文件处理的方法教程
2019/08/29 Python
python tkinter组件摆放方式详解
2019/09/16 Python
python中的itertools的使用详解
2020/01/13 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
python如何随机生成高强度密码
2020/08/19 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
廉洁教育学习材料
2014/05/19 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB
排查Tomcat进程假死的问题
2022/05/06 Servers
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript