형편없는 SOAP 구현을 구축하는 데 지치셨나요? 이 패키지는 PHP의 몇 가지 일반적인 SOAP 통합 문제를 해결하는 데 도움을 주는 것을 목표로 합니다. 그 목표는 SOAP과의 통합을 다시 재미있게 만드는 것입니다!
이 프로젝트의 미래에 대해 더 많은 정보를 원하시나요? 우리가 작업할 다음 대규모 프로젝트 목록을 확인해 보세요.
사용하려는 HTTP 클라이언트를 선택할 수 있습니다. 이 패키지는 설치를 위해 일부 PSR 구현이 있을 것으로 예상합니다.
symfony/cache
또는 cache/*-adapter
와 같은 psr/cache-implementation
nyholm/psr7
또는 guzzlehttp/psr7
과 같은 psr/http-message-implementation
nyholm/psr7
또는 guzzlehttp/psr7
과 같은 psr/http-factory-implementation
symfony/http-client
또는 guzzlehttp/guzzle
과 같은 psr/http-client-implementation
예:
$ composer require symfony/http-client nyholm/psr7
$ composer require phpro/soap-client
문서를 읽기에는 인생이 너무 짧기 때문에 SOAP 서버와 즉시 통신할 수 있는 스캐폴딩 마법사를 추가했습니다! 당신이 해야 할 일은 다음과 같습니다:
./vendor/bin/soap-client wizard
다음 장의 수동 설치 페이지를 기반으로 생성된 코드를 사용자 정의할 수 있습니다.
이것은 php-soap 위에 클라이언트를 구현한 것입니다. 고급 구성에 대해서는 php-soap 패키지 내부의 문서를 확인하세요.
Rules
지정Assemblers
통해 코드 생성기본적으로 SoapClient는 배열, stdClasses 및 기타 스칼라 유형을 혼합하여 작동합니다. 이는 다음과 같은 이유로 현대 OOP 세계에서는 좋은 습관이 아닙니다.
위의 문제를 해결하기 위해 이 패키지는 요청 및 응답에 값 개체를 사용하도록 강제합니다. 우리는 이러한 가치 객체를 유지하는 것이 엄청난 작업이 될 수 있다는 것을 알고 있습니다. 걱정 마세요! 시작하기에 좋은 기반을 생성하는 데 도움이 되는 몇 가지 명령줄 도구가 있습니다. SoapClient에는 PHP 클래스에 대한 WSDL의 클래스맵이 필요하므로 클래스맵 생성기도 사용할 수 있습니다. 이렇게 하면 확실히 많은 시간이 절약될 것입니다! SOAP 유형 변환기를 추가하면 특정 SOAP 유형의 값을 PHP 유형에서/로 변환하는 것이 가능합니다. 패키지에는 날짜 및 날짜/시간에 대한 몇 가지 기본 변환기가 포함되어 있습니다. 게다가 자신만의 변압기를 만드는 것도 매우 쉽습니다.
또 다른 문제는 기본 SoapClient가 많은 매직 메서드와 함께 작동한다는 것입니다. 이러한 매직 메서드를 디버깅하는 것은 어렵기 때문에 코드 완성이 없습니다. SOAP와 구현 메소드는 모두 동일한 객체에 있습니다.
이 패키지는 SoapClient를 자신의 클라이언트로 래핑하도록 강제합니다. 필요한 메소드만 노출하도록 선택할 수 있습니다. 개발자는 클라이언트에 무엇이 있는지, 어떻게 작동하는지, 무엇을 반환하는지 항상 명확하게 알 수 있습니다. 우리는 디버깅, 인증 및 이벤트 시스템에 일반적으로 사용되는 몇 가지 방법과 함께 사용할 수 있는 기본 클라이언트도 제공했습니다.
많은 SOAP 통합에서 로깅, 캐싱 및 Soap 호출은 동일한 방법으로 수행됩니다. 이로 인해 코드를 읽기가 어려워지고 다른 클래스/패키지에 종속됩니다.
훌륭한 OO SOAP 클라이언트를 생성한다는 것은 많은 코드를 생성해야 한다는 것을 의미합니다. 이는 자동화할 수 있는 지루한 작업일 수 있습니다. 이것이 바로 우리가 WSDL 내부의 XSD 체계에서 SOAP 개체를 자동으로 생성하는 도구를 추가한 이유입니다. 자신만의 코드 생성 규칙과 코드 어셈블러를 지정하거나 다양한 내장 클래스 중 하나를 사용하는 것도 가능합니다.
코드를 깨끗하게 유지하는 것이 중요합니다. 따라서 Soap 클라이언트에 이벤트 리스너를 추가했습니다. SOAP 흐름의 모든 중요한 단계에 연결할 수 있습니다. 이렇게 하면 이벤트 구독자를 통해 로깅, 유효성 검사 및 오류 처리를 추가할 수 있습니다. 꽤 멋지죠?!
SOAP 확장을 구현하는 것은 정말 골치 아픈 일입니다. 내장 SOAP 클라이언트의 핵심 메소드를 덮어쓰도록 강제합니다. SOAP에서 WSA 또는 WSSE를 구현해야 한다면 코어에 문제가 있다는 것을 알게 될 것입니다. 따라서 우리는 SOAP 클라이언트를 쉽게 확장할 수 있도록 만들었습니다. Guzzle과 같이 사용하려는 데이터 전송 핸들러를 지정할 수 있습니다. 선택한 핸들러에 따라 HTTP 미들웨어를 통해 SOAP 확장 또는 고급 인증에 대한 지원을 쉽게 추가할 수 있습니다.
ext-soap을 다루는 것은 모든 개발자에게 해당되는 것은 아닙니다. 당신이 알아야 할 몇 가지 불쾌한 특징이 있습니다. 따라서 우리는 귀하가 사용하고 싶은 드라이버를 사용할 수 있도록 했습니다. 기본적으로 우리는 여전히 ext-soap 드라이버를 제공하지만 이는 전적으로 선택 사항입니다. 자체 드라이버 인터페이스에 래핑하면 모든 사용자 영역 SoapClient 구현을 사용할 수 있습니다.
웹 서비스를 테스트하는 것은 어렵습니다! 이 패키지는 SOAP 서비스를 테스트하는 다양한 방법을 제공합니다. 전송은 HTTP 기반이므로 php-vcr
구현을 사용할 수 있습니다. 실제 HTTP 호출을 수행하고 싶지 않은 경우 테스트 사례에서 사용자 지정 Transport
또는 Caller
사용할 수도 있습니다. SOAP 클라이언트 테스트는 통합의 제3자 측에서 오류 없이 매우 빠르게 진행됩니다.
마지막으로 우리는 귀하가 SoapClient를 쉽게 구성할 수 있도록 하고자 합니다. 이것이 바로 사용자 정의 클라이언트를 구성할 수 있는 생성된 ClientFactory를 포함시킨 이유입니다. 개발 및 프로덕션 중에 다른 설정을 원하시나요? 괜찮아요! 편안히 앉아 공장에서 클라이언트 초기화를 처리하도록 하세요.