厭倦了建立蹩腳的 SOAP 實現嗎?該套件旨在幫助您解決 PHP 中一些常見的 SOAP 整合難題。它的目標是讓與 SOAP 的整合再次變得有趣!
想要了解更多關於該項目未來的資訊嗎?查看我們將要開展的下一個大型專案的清單。
您可以選擇要使用的 HTTP 用戶端。該軟體包需要一些 PSR 實現才能安裝:
psr/cache-implementation
如symfony/cache
或cache/*-adapter
psr/http-message-implementation
如nyholm/psr7
或guzzlehttp/psr7
psr/http-factory-implementation
如nyholm/psr7
或guzzlehttp/psr7
psr/http-client-implementation
如symfony/http-client
或guzzlehttp/guzzle
例子:
$ 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 會混合使用陣列、stdClass 和其他標量類型。在現代 OOP 世界中這不是一個好的實踐,因為:
為了解決上述問題,這個套件將強制您使用值物件來處理請求和回應。我們知道維護這些值物件可能是一項繁重的工作。不用擔心!有一些可用的命令列工具可以幫助您打下良好的基礎。由於 SoapClient 需要 WSDL 到 PHP 類別的類別映射,因此還有一個可用的類別映射生成器。這肯定會節省您很多時間!透過新增 SOAP 類型轉換器,可以將特定 SOAP 類型的值從 PHP 類型轉換為 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,您可以在其中配置自訂客戶端。您想要在開發和生產過程中進行一些其他設定嗎?沒問題!坐下來讓工廠處理您的客戶端初始化。