当前位置: 首页 > news >正文

php 打印soap日志,在PHP中记录所有Soap请求和响应

我是第二个Aleksanders和Stefans的建议,但不会将SoapClient子类化.相反,我会将常规SoapClient包装在装饰器中,因为日志记录不是SoapClient的直接关注点.此外,松散耦合使您可以在UnitTests中使用模拟轻松替换SoapClient,因此您可以专注于测试日志记录功能.如果您只想记录特定的调用,可以添加一些逻辑,通过$action或您认为合适的任何内容来过滤请求和响应.

编辑自Stefan建议添加一些代码后,装饰器可能看起来像这样,虽然我不确定__call()方法(参见Stefans注释)

class SoapClientLogger

{

protected $soapClient;

// wrapping the SoapClient instance with the decorator

public function __construct(SoapClient $client)

{

$this->soapClient = $client;

}

// Overloading __doRequest with your logging code

function __doRequest($request, $location, $action, $version, $one_way = 0)

{

$this->log($request, $location, $action, $version);

$response = $this->soapClient->__doRequest($request, $location,

$action, $version,

$one_way);

$this->log($response, $location, $action, $version);

return $response;

}

public function log($request, $location, $action, $version)

{

// here you could add filterings to log only items, e.g.

if($action === 'foo') {

// code to log item

}

}

// route all other method calls directly to soapClient

public function __call($method, $args)

{

// you could also add method_exists check here

return call_user_func_array(array($this->soapClient, $method), $args);

}

}

相关文章:

  • oracle调用sqlplus,oracle 安装与SQLPLUS简单用法
  • oracle bi免费不,Oracle BI管理工具.doc
  • oracle查看expdp进度,impdp、expdp监控数据备份恢复完成进度(EXPDP/IMPDP/RMAN)
  • matlab x的几次方怎么表示,PPTx的几次方如何输入?
  • 群辉linux系统,[教程] 群晖VMM虚拟机安装Linux系统无法成功启动桌面的解决办法...
  • linux系统卡死鼠标不动,linux桌面环境鼠标假死.点不动
  • Linux中free函数头文件,FreeImage图形库如何在Linux下的使用
  • linux r如何运行软件,linux上R的使用
  • hnc8进linux环境,鸟哥的linux私房菜(基础篇,8、开机关机、在线)命令
  • 润乾连接linux数据库,Linux下使用润乾设计器
  • linux c语言拷贝u盘,用C语言编写linux cp 拷贝命令
  • linux是开发环境,Linux开发环境
  • 卸载win19安装linux,Win10 LTSC 2019 安装和卸载 linux 子系统
  • linux远程访问图形硬件,Psensor - 图形硬件温度监控器适用于Linux
  • linux如何查看内核内存使用情况,如何查看centos系统cpu/内存使用情况
  • [NodeJS] 关于Buffer
  • AngularJS指令开发(1)——参数详解
  • canvas 绘制双线技巧
  • Codepen 每日精选(2018-3-25)
  • create-react-app做的留言板
  • Docker 笔记(2):Dockerfile
  • Kibana配置logstash,报表一体化
  • node.js
  • Rancher如何对接Ceph-RBD块存储
  • rc-form之最单纯情况
  • scala基础语法(二)
  • Theano - 导数
  • windows下使用nginx调试简介
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 如何进阶一名有竞争力的程序员?
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 问题之ssh中Host key verification failed的解决
  • 整理一些计算机基础知识!
  • 组复制官方翻译九、Group Replication Technical Details
  • # Maven错误Error executing Maven
  • #pragma once与条件编译
  • #ubuntu# #git# repository git config --global --add safe.directory
  • $.ajax()
  • $.ajax()方法详解
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (AngularJS)Angular 控制器之间通信初探
  • (二)Linux——Linux常用指令
  • (六)vue-router+UI组件库
  • (三)elasticsearch 源码之启动流程分析
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (四) 虚拟摄像头vivi体验
  • (五)关系数据库标准语言SQL
  • (转)大道至简,职场上做人做事做管理
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。