Как работает SOAP в PHP?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Как уже неоднократно говорилось, нужно изучать актуальный материал — getjump.github.io/ru-php-the-right-way
А все эти допотопные рускоязычные видеокурсы только запутают и все равно придется после них переучиваться.

Не в тему но все же:
soap да на xml да еще под wsdl, это такое древнее о громоздкое творение что скорое всего пустая трата времени. imo конечно.

Если вы про курс Борисова, то у него есть и более новый вроде за 2013 год. И да WSDL еще актуален. Вообще советую внимательно посмотреть все. Из курсов «программирования» по PHP в русскоязычной среде этот наиболее полный и правильный в отличии от всяких поповых. Ну и как он там говорит, надо штудировать мануал.

Превратим dou в stackoverflow

Нужно понимать, что такое SOAP сервер и клиент. В общем случае их реализации абсолютно независимы. Может быть, например, сервер на PHP и клиент на браузерном JavaScript, может быть клиент на PHP и сервер на Java.

PHP класс SoapServer лишь обеспечивает преобразование тела SOAP-запроса в вызовы зарегистрированных в нём функций и методов, которое можно делать вручную. Приложение (или фреймворк) должны сами определить, что пришёл SOAP-вызов (например, по URL), осуществить его предварительную обработку, создать экземляр SoapServer и дернуть его метод handle(), чтобы вызвать нужную функцию или не создавать, а сделать всё самостоятельно.

PHP класс SoapClient прежде всего обеспечивает сам вызов, ответ может вернуть как нераспарсенный XML, так и как скаляр или массив скаляров.

примитивное значение: число, строка.

Литерал — текстовое представление значения. Например, [1, 2, 3] — полностью литерал массива из скаляров.

1. Класс SoapClient это просто удобная обвертка над работой со сторонним соап сервисом. Путь к wsdl что ты передаешь в конструкторе даёт твоему клиенту описание методов АПИ этого сервиса и задаёт типизацию параметров этих методов. Если в метод getStock отдать что-то заведомо невалидное, то запрос даже не уйдёт. А если все нормально, то уходит обычный хттп запрос с правильным XML в теле.
2. В переменной $result уже распарсенный ответ сервиса. Но у соап клиента есть методы для вытаскивания последнего запроса и ответа в чистом виде.

Да, у этого протокола недостаток в жёсткой типизации параметров. Но его часто можно встретить в платежных системах.

1. Как сервер понимает, что к нему пришел запрос и вызывает метод SOAP-сервера? Может там есть какая-то глобальная переменная, которую он проверяет по достижению $server->handle();
сервер привязан к урлу , можно повесить на какой нить /lala/la/la/pu и будет там
2. Как клиент достает ответ? Он парсит XML ответа, который прилетает в ответ на вызов метода (процедуры удаленного веб-сервиса) и просто вытягивает данные из него?
да

Підписатись на коментарі