Страница PHP Soap Server (я видел это):
http://www.php.net/manual/en/soapserver.soapserver.php
Но у меня отсутствует важная нехватка документации для моей собственной проблемы:
Мне нужно знать, возможно ли создать экземпляр сервера непосредственно с помощью XML-строки, например, класс SimpleXML
:
//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 и использовать его, как если бы он был прочитан на диске? Какой-то буфера потока? Или какой-то файловый дескриптор на лету?
Да, это возможно, создав 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);
Это должно делать то, что вы ищете. Связанный ответ .