Sind Sie es leid, beschissene SOAP-Implementierungen zu erstellen? Dieses Paket soll Ihnen bei einigen häufigen Problemen bei der SOAP-Integration in PHP helfen. Sein Ziel ist es, die Integration mit SOAP wieder zum Spaß zu machen!
Möchten Sie weitere Informationen über die Zukunft dieses Projekts? Schauen Sie sich diese Liste der nächsten großen Projekte an, an denen wir arbeiten werden.
Sie können auswählen, welchen HTTP-Client Sie verwenden möchten. Dieses Paket erwartet, dass einige PSR-Implementierungen vorhanden sind, damit sie installiert werden können:
psr/cache-implementation
wie symfony/cache
oder cache/*-adapter
psr/http-message-implementation
wie nyholm/psr7
oder guzzlehttp/psr7
psr/http-factory-implementation
wie nyholm/psr7
oder guzzlehttp/psr7
psr/http-client-implementation
wie symfony/http-client
oder guzzlehttp/guzzle
Beispiel:
$ composer require symfony/http-client nyholm/psr7
$ composer require phpro/soap-client
Da das Leben zu kurz ist, um die Dokumentation zu lesen, haben wir einen Gerüstbau-Assistenten hinzugefügt, mit dem Sie im Handumdrehen mit Ihrem SOAP-Server kommunizieren können! Alles was Sie tun müssen ist:
./vendor/bin/soap-client wizard
Sie können den generierten Code basierend auf den manuellen Installationsseiten im nächsten Kapitel anpassen.
Dies ist eine Client-Implementierung auf Basis von PHP-Soap. Für eine erweiterte Konfiguration können Sie die Dokumentation in den PHP-Soap-Paketen überprüfen.
Rules
anAssemblers
Standardmäßig arbeitet der SoapClient mit einer Mischung aus Arrays, stdClasses und anderen Skalartypen. Dies ist in einer modernen OOP-Welt keine gute Praxis, weil:
Um die oben genannten Probleme zu lösen, werden Sie mit diesem Paket gezwungen, Wertobjekte für Anfragen und Antworten zu verwenden. Wir wissen, dass die Pflege dieser Wertgegenstände eine Menge Arbeit sein kann. Keine Sorge! Es stehen einige Befehlszeilentools zur Verfügung, die Ihnen dabei helfen, zunächst eine gute Basis zu erstellen. Da der SoapClient eine Klassenzuordnung von WSDL-zu-PHP-Klassen benötigt, steht auch ein Klassenzuordnungsgenerator zur Verfügung. Das wird Ihnen sicherlich viel Zeit sparen! Durch das Hinzufügen von SOAP-Typkonvertern ist es möglich, die Werte eines bestimmten SOAP-Typs von/in einen PHP-Typ umzuwandeln. Das Paket enthält einige grundlegende Transformatoren für Datum und Datum/Uhrzeit. Darüber hinaus ist es sehr einfach, eigene Transformatoren zu erstellen.
Ein weiteres Problem besteht darin, dass der native SoapClient mit vielen magischen Methoden arbeitet. Es ist schwierig, diese magischen Methoden zu debuggen, daher gibt es keine Code-Vervollständigung. Sowohl SOAP- als auch Implementierungsmethoden befinden sich auf demselben Objekt.
Dieses Paket zwingt Sie dazu, einen SoapClient in Ihren eigenen Client einzubinden. Sie können festlegen, dass nur die Methoden verfügbar gemacht werden, die Sie benötigen. Für den Entwickler ist immer klar, was in Ihrem Client enthalten ist, wie er funktioniert und was er zurückgibt. Wir haben Ihnen sogar einen Basis-Client zur Verfügung gestellt, den Sie mit einigen häufig verwendeten Methoden zum Debuggen, zur Authentifizierung und einem Ereignissystem verwenden können.
Bei vielen SOAP-Integrationen erfolgt die Protokollierung, das Caching und die Soap-Aufrufe in derselben Methode. Dadurch ist Ihr Code schwer lesbar und von anderen Klassen/Paketen abhängig.
Um einen großartigen OO-SOAP-Client zu erstellen, müssen Sie eine Menge Code erstellen. Dies kann eine mühsame Aufgabe sein, die automatisiert werden kann. Aus diesem Grund haben wir die Tools zum automatischen Generieren der SOAP-Objekte aus dem XSD-Schema innerhalb der WSDL hinzugefügt. Es ist sogar möglich, Ihre eigenen Codegenerierungsregeln und Code-Assembler anzugeben oder eine unserer vielen integrierten Klassen zu verwenden.
Es ist wichtig, dass Ihr Code sauber bleibt. Aus diesem Grund haben wir Ihrem Soap-Client einen Event-Listener hinzugefügt. Sie können bei jedem wichtigen Schritt des SOAP-Flusses mitmachen. Auf diese Weise ist es möglich, Protokollierung, Validierung und Fehlerbehandlung mit Ereignisabonnenten hinzuzufügen. Ziemlich cool, oder?!
Die Implementierung von SOAP-Erweiterungen ist eine echte Nervensäge. Dadurch werden Sie gezwungen, Kernmethoden des integrierten SOAP-Clients zu überschreiben. Wenn Sie jemals WSA oder WSSE in SOAP implementieren mussten, wissen Sie, dass im Kern etwas nicht stimmt. Deshalb haben wir es Ihnen leicht gemacht, unseren SOAP-Client zu erweitern. Sie können angeben, welchen Datenübertragungshandler wie z. B. Guzzle Sie verwenden möchten. Abhängig vom ausgewählten Handler können Sie problemlos Unterstützung für SOAP-Erweiterungen oder erweiterte Authentifizierung über HTTP-Middlewares hinzufügen.
Der Umgang mit Ext-Soap ist nicht für alle Entwickler geeignet. Es gibt einige unangenehme Macken, über die Sie Bescheid wissen müssen. Deshalb haben wir es Ihnen ermöglicht, den von Ihnen gewünschten Treiber zu verwenden. Standardmäßig liefern wir weiterhin einen Ext-Soap-Treiber aus, dieser ist jedoch vollständig optional. Sie können jede SoapClient-Implementierung im Benutzerland verwenden, wenn Sie sie in unsere eigenen Treiberschnittstellen einbinden.
Webservices zu testen ist schwer! Dieses Paket bietet verschiedene Möglichkeiten zum Testen eines SOAP-Dienstes. Da der Transport HTTP-basiert ist, könnten Sie eine php-vcr
-Implementierung verwenden. Wenn Sie keine tatsächlichen HTTP-Aufrufe durchführen möchten, können Sie in Ihren Testfällen auch einen benutzerdefinierten Transport
oder Caller
verwenden. Das Testen Ihres SOAP-Clients erfolgt sehr schnell und ohne Fehler auf der Drittanbieterseite der Integration.
Zu guter Letzt möchten wir Ihnen die Konfiguration Ihres SoapClients einfach machen. Aus diesem Grund haben wir eine generierte ClientFactory integriert, auf der Sie Ihren benutzerdefinierten Client konfigurieren können. Sie wünschen sich andere Einstellungen während der Entwicklung und in der Produktion? Kein Problem! Lehnen Sie sich zurück und überlassen Sie die Initialisierung Ihres Clients dem Werk.