PHP Soap Server: создайте экземпляр со строкой (строка xml) вместо файла WSDL (url к нему)

Страница 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); 

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