1. Go to this page and download the library: Download php-soap/psr18-transport library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
php-soap / psr18-transport example snippets
use Http\Client\Common\PluginClient;
use Soap\Engine\SimpleEngine;
use Soap\Psr18Transport\Psr18Transport;
$engine = new SimpleEngine(
$driver,
$transport = Psr18Transport::createForClient(
new PluginClient(
$psr18Client,
[...$middleware]
)
)
);
use Http\Client\Common\PluginClient;
use Soap\Psr18Transport\Middleware\Wsdl\DisableExtensionsMiddleware;
$wsdlClient = new PluginClient(
$psr18Client,
[
new DisableExtensionsMiddleware(),
]
);
use Http\Client\Common\PluginClient;
use Soap\Psr18Transport\Middleware\Wsdl\DisablePoliciesMiddleware;
$wsdlClient = new PluginClient(
$psr18Client,
[
new DisablePoliciesMiddleware(),
]
);
use Http\Client\Common\PluginClient;
use Soap\Psr18Transport\Middleware\RemoveEmptyNodesMiddleware;
$httpClient = new PluginClient(
$psr18Client,
[
new RemoveEmptyNodesMiddleware()
]
);
use Http\Client\Common\PluginClient;
use Soap\Psr18Transport\Middleware\RemoveEmptyNodesMiddleware;
use Soap\Xml\Builder\Header\Actor;
use Soap\Xml\Builder\Header\MustUnderstand;
use Soap\Xml\Builder\SoapHeader;
$httpClient = new PluginClient(
$psr18Client,
[
new SoapHeaderMiddleware(
new SoapHeader(
$tns,
'x:Auth',
children(
namespaced_element($tns, 'x:user', value('josbos')),
namespaced_element($tns, 'x:password', value('topsecret'))
)
),
new SoapHeader($tns, 'Acting', Actor::next()),
new SoapHeader($tns, 'Understanding', new MustUnderstand())
)
]
);
use Http\Client\Common\Plugin\AuthenticationPlugin;
use Http\Client\Common\Plugin\BaseUriPlugin;
use Http\Client\Common\Plugin\LoggerPlugin;
use Http\Message\Authentication\BasicAuth;
$httpClient = new PluginClient(
$psr18Client,
[
new BaseUriPlugin($baseLocation),
new AuthenticationPlugin(new BasicAuth($_ENV['user'], $_ENV['pass'])),
new LoggerPlugin($psrLogger),
]
);
use Http\Client\Common\Plugin;
use Http\Promise\Promise;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
use Soap\Psr18Transport\Xml\XmlMessageManipulator;
use VeeWee\Xml\Dom\Document;
class SomeMiddleware implements Plugin
{
public function handleRequest(RequestInterface $request, callable $next, callable $first): Promise
{
$request = (new XmlMessageManipulator)(
$request,
fn (Document $document) => $document->manipulate(
doSomethingWithRequestXml()
)
);
return $next($request)
->then(function (ResponseInterface $response): ResponseInterface {
return (new XmlMessageManipulator)(
$response,
fn (Document $document) => $document->manipulate(
doSomethingWithResponseXml()
)
);
});
}
}
use Http\Client\Common\PluginClient;
use Soap\Psr18Transport\Wsdl\Psr18Loader;
use Soap\Wsdl\Loader\FlatteningLoader;
$loader = Psr18Loader::createForClient(
$wsdlClient = new PluginClient(
$psr18Client,
[...$middleware]
)
);
// If you want to flatten all imports whilst using this PSR-18 loader:
$loader = new FlatteningLoader($loader);
$payload = $loader('http://some.wsdl');
use Http\Client\Common\PluginClient;
use Soap\Engine\SimpleEngine;
use Soap\ExtSoapEngine\ExtSoapDriver;
use Soap\ExtSoapEngine\ExtSoapOptions;
use Soap\ExtSoapEngine\Wsdl\TemporaryWsdlLoaderProvider;
use Soap\Psr18Transport\Psr18Transport;
use Soap\Psr18Transport\Wsdl\Psr18Loader;
use Soap\Wsdl\Loader\FlatteningLoader;
use Veewee\Psr18ReactBrowser\Psr18ReactBrowserClient;
use function React\Async\async;
use function React\Async\await;
use function React\Async\parallel;
$asyncHttpClient = Psr18ReactBrowserClient::default();
$engine = new SimpleEngine(
ExtSoapDriver::createFromClient(
$client = AbusedClient::createFromOptions(
ExtSoapOptions::defaults('http://www.dneonline.com/calculator.asmx?wsdl', [])
->disableWsdlCache()
)
),
$transport = Psr18Transport::createForClient(
new PluginClient(
$asyncHttpClient,
[...$middleware]
)
)
);
$add = async(fn ($a, $b) => $engine->request('Add', [['intA' => $a, 'intB' => $b]]));
$addWithLogger = fn ($a, $b) => $add($a, $b)->then(
function ($result) use ($a, $b) {
echo "SUCCESS {$a}+{$b} = ${result}!" . PHP_EOL;
return $result;
},
function (Exception $e) {
echo 'ERROR: ' . $e->getMessage() . PHP_EOL;
}
);
$results = await(parallel([
fn() => $addWithLogger(1, 2),
fn() => $addWithLogger(3, 4),
fn() => $addWithLogger(5, 6)
]));
var_dump($results);
bash
composer
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.