Как стать автором
Обновить

Комментарии 11

Простите, а для php нет кодогенераторов, которые бы позволяли на основании wsdl сразу получить нормальный типизованный клиент?
На предмет этого даже не приходило в голову гуглить. Мне это было не нужно, т.к. передо мной стояла задача не только получить данные, но и обработать их. Полное решение я не стал выкладывать, т.к. оно специфично, и для читающих сей пост — абсолютно не нужно.

А если необходимо просто получить данные, не обрабатывая, или обрабатывая их на другом уровне — то и расширение класса не нужно, хватит и стандартного, хмм.
Я не очень понимаю, как из задачи обработать данные (которая, заметим, есть почти всегда при взаимодействии с чужим сервисом) вырастает ненужность нормального типизованного клиента (который бы позволил вам, например, не передавать wsdl при каждом создании клиента, и не возиться с нетипизованными параметрами).
Я писал это расширение в первую очередь из-за обработки внешних получаемых параметров, и только во-вторую — для удобства использования.

А по-поводу:
А если необходимо просто получить данные, не обрабатывая, или обрабатывая их на другом уровне — то и расширение класса не нужно, хватит и стандартного, хмм.

Извините — погорячился. Я неправ.
Понимаете ли, вот этот код:

function getPersonaByCompany($companyName, $regionCode) {
        $dataSoap = $this->FindByCompany(array("CompanyName"=>$companyName, "RegionCode"=>$regionCode));
        return $dataSoap->FindByCompanyResult;
}


Должен писать кодогенератор, а не человек.
Возможно, но человек должен хотя-бы раз написать такой код сам, чтобы знать и понимать.
Это конечно круто, когда за тебя все делает программа, но все же необходимо и самому что-то уметь
Один раз написать — возможно. Использовать это в продуктиве — незачем.
И чем данное решение хуже чем решение кодогенератора? Действительно, сейчас нет времени качать последний и смотреть отличия. Или дело только в автоматизации?
Но это статья для новичков, возможно следующая статья и будет о чем либо подобном.
И чем данное решение хуже чем решение кодогенератора?

Лишней работой, которая не несет пользы, но зато может создавать ошибки.
задем делать винегрет внутри объекта? используйте паттерн адаптер
У нас был для работы через соап на пхп была сделана обертка, но подход при котором создавались отдельные методы для работы с каждым веб метом функции, аля:

function getPersonaByCompany($companyName, $regionCode) {
$dataSoap = $this->FindByCompany(array(«CompanyName»=>$companyName, «RegionCode»=>$regionCode));


мы отбросили спустя определенное время так как без каких либо бонусов это порождало двойную работу когда при создании или изменении soap-вебметода приходилось вносить доп. изменения и на стороне клиентского приложения php

Вместо это у нас небольшая обертка с обработкой ошибок, различными способами авторизации еще другими «плюшками», а запрос если вкратце выполняется вот так:


$request = $client->$method($data);


Это позволяет написав один раз обертку, далее использовать его как черный ящик, единственные изменения которые в него вносились это было подключение новых способов авторизации, но не написание новых методов…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории