Files
BeSimpleSoap/src/BeSimple/SoapCommon/SoapKernel.php

53 lines
1.8 KiB
PHP
Raw Normal View History

<?php
namespace BeSimple\SoapCommon;
/**
* SoapKernel provides methods to pre- and post-process SoapRequests and SoapResponses using
2011-12-17 16:25:49 +01:00
* chains of SoapRequestFilter and SoapResponseFilter objects (roughly following
* the chain-of-responsibility pattern).
2011-12-17 16:25:49 +01:00
*
* @author Christian Kerl <christian-kerl@web.de>
* @author Petr Bechyně <mail@petrbechyne.com>
*/
class SoapKernel
{
/**
2011-12-17 16:25:49 +01:00
* Applies all registered SoapRequestFilter to the given SoapRequest.
*
* @param SoapRequest $request Soap request
2016-11-01 18:13:23 +01:00
* @param SoapRequestFilter[]|SoapResponseFilter[] $filters
2016-11-02 09:55:12 +01:00
* @param int $attachmentType = SoapOptions::SOAP_ATTACHMENTS_TYPE_SWA|SoapOptions::ATTACHMENTS_TYPE_MTOM|SoapOptions::ATTACHMENTS_TYPE_BASE64
2016-11-01 18:13:23 +01:00
* @return SoapRequest
*/
public static function filterRequest(SoapRequest $request, array $filters, $attachmentType)
{
2016-11-01 18:13:23 +01:00
foreach ($filters as $filter) {
if ($filter instanceof SoapRequestFilter) {
2016-11-02 09:55:12 +01:00
$request = $filter->filterRequest($request, $attachmentType);
2016-11-01 18:13:23 +01:00
}
}
2016-11-01 18:13:23 +01:00
return $request;
}
2011-12-17 16:25:49 +01:00
/**
2011-12-17 16:25:49 +01:00
* Applies all registered SoapResponseFilter to the given SoapResponse.
*
* @param SoapResponse $response SOAP response
2016-11-01 18:13:23 +01:00
* @param SoapRequestFilter[]|SoapResponseFilter[] $filters
2016-11-02 09:55:12 +01:00
* @param int $attachmentType = SoapOptions::SOAP_ATTACHMENTS_TYPE_SWA|SoapOptions::ATTACHMENTS_TYPE_MTOM|SoapOptions::ATTACHMENTS_TYPE_BASE64
* @return \BeSimple\SoapClient\SoapResponse|\BeSimple\SoapServer\SoapResponse
*/
public static function filterResponse(SoapResponse $response, array $filters, $attachmentType)
{
2016-11-01 18:13:23 +01:00
foreach ($filters as $filter) {
if ($filter instanceof SoapResponseFilter) {
2016-11-02 09:55:12 +01:00
$response = $filter->filterResponse($response, $attachmentType);
2016-11-01 18:13:23 +01:00
}
}
2016-11-01 18:13:23 +01:00
return $response;
}
2013-12-02 15:14:06 +01:00
}