Можно ли вызвать конструктор PHP SoapClient, который принимает URL-адрес в качестве аргумента, вместо содержимого строки.Вызов конструктора SoapClient с WSDL из переменной вместо URL-адреса
В моем примере у меня есть обработанный DOMDocument, содержащий WSDL, который я бы записал в строку с помощью saveXML().
Идея состоит в том, чтобы не трогать файловую систему, если это возможно. Я пробовал память php: //, но тесты при получении содержимого потока с такими функциями, как file_get_contents, приводят к пустым строкам, поскольку я подозреваю, что контекст потока исчез. Есть ли другой способ?
Это только кажется, что вызовет ошибку при создании экземпляра SoapClient: «не удалось открыть поток: rfc2397: нет запятой в URL» – Russ
Я расширил ответ, чтобы предоставить рабочий образец, однако технически WSDL теперь находится в файловой системе внутри самого файла PHP. Однако, если WSDL был построен только с помощью вызовов метода DOMDocument, он будет полностью находиться в памяти. Когда я получу несколько минут свободного времени, я обновлю ответ, чтобы WSDL был построен «на лету», используя «DOMDocument». –
Я думаю, что ключевым выводом здесь является то, что 'SoapClient' может принимать URL как аргумент, но можно передать содержимое строки, как задает вопрос, потому что PHP рассматривает его как контекст потока. Поэтому мы можем заменить в 'data: //' вместо 'file: //' или 'http: //' –