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对象类型判断
Aug 27 PHP
php 攻击方法之谈php+mysql注射语句构造
Oct 30 PHP
PHP 中检查或过滤IP地址的实现代码
Nov 27 PHP
PHP 通过Socket收发十六进制数据的实现代码
Aug 16 PHP
php实现分页工具类分享
Jan 09 PHP
实现获取http内容的php函数分享
Feb 16 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
Sep 16 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
php 在字符串指定位置插入新字符的简单实现
Jun 28 PHP
php cli模式下获取参数的方法
May 05 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
May 17 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
Feb 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
ueditor 1.2.6 使用方法说明
2013/07/24 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
php fread函数使用方法总结
2019/05/28 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
php实现分页功能的详细实例方法
2019/09/29 PHP
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
js中匿名函数的创建与调用方法分析
2014/12/19 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
莱鸟介绍javascript onclick事件
2016/01/06 Javascript
jquery判断input值不为空的方法
2016/06/05 Javascript
AngularJS 入门教程之HTML DOM实例详解
2016/07/28 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
2017/06/13 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
Python执行时间的计算方法小结
2017/03/17 Python
python 第三方库的安装及pip的使用详解
2017/05/11 Python
获取python的list中含有重复值的index方法
2018/06/27 Python
python批量修改图片大小的方法
2018/07/24 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
如何使用Python 打印各种三角形
2019/06/28 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
解决tensorflow打印tensor有省略号的问题
2020/02/04 Python
Django 设置多环境配置文件载入问题
2020/02/25 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
如何利用python 读取配置文件
2021/01/06 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
2014年化验员工作总结
2014/11/18 职场文书
庆七一主持词
2015/06/29 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers