PHP Soap Server: создание экземпляра со строкой (строка xml) вместо файла WSDL (URL к нему) - PullRequest
7 голосов
/ 16 ноября 2011

Страница PHP сервера Soap (я ее видел):

http://www.php.net/manual/en/soapserver.soapserver.php

Но я упускаю важный недостаток документации по моей собственной проблеме:

Мне нужно знать, возможно ли создать экземпляр Сервера напрямую с помощью строки XML, как это делает SimpleXML class:

//From var (the one I want):
$movies = new SimpleXMLElement($xmlstr);

или

//From file and from string (the one I want):
$xml = simplexml_load_file('test.xml');

$xml = simplexml_load_string($string);

Итак, яхотел бы сделать что-то вроде этого:

$wsdl_cont = file_get_contents("../xmls/mywsdl.wsdl");
$server = new SoapServer($wsdl_cont);

Возможно ли это?

Причина этого в том, что у меня есть несколько разных URL, которые должны использовать один и тот же XML, поэтому мне нужновыполнить замену на лету URL-адреса шаблона и изменить его на правильный, а затем загрузить WSDL.Но я не хочу сохранять на жестком диске мгновенно сгенерированный WSDL, чтобы удалить его сразу после прочтения.

Возможно ли создать какой-то "виртуальный файл" на PHP и использовать его так, как если бы он былдиск читать один?Какой-то потоковый буфер?Или какой-то файловый дескриптор на лету?

1 Ответ

19 голосов
/ 16 ноября 2011

Да, это возможно путем создания DATA URI из содержимого файлов и использования его в качестве "файла".

$name = 'mywsdl.wsdl';
$path = '/path-to-file/'.$name;
$data = file_get_contents($path);
$file = 'data://text/plain;base64,'.base64_encode($data);
$server = new SoapServer($file);

Это должно сделать то, что вы ищете.A связанный ответ .

...