2009-02-20 4 views
17

PHP 5에서 네이티브 SOAP 클래스를 사용하고 있습니다. NuSOAP에서 네이티브 클래스로 변경하면 더 빠르며 (NuSOAP 개발이 중단 된 것 같습니다). 그러나 PHP 5 SOAP에는 WSDL을 생성 할 수있는 기능이 없습니다.PHP의 원시 SOAP 클래스를 사용할 때 WSDL 생성?

PHP로 WSDL을 생성 한 경험이 있습니까? 그렇다면 원하는 방법을 권장하십시오.

감사합니다.

답변

3

즉석에서 WSDL을 생성하는 것은 자주 발생하는 것이 아니며 서비스의 안정성에 대해 몇 가지 질문을 제기하는 경향이 있습니다!

젠드 스튜디오는 PHP 클래스에서 WSDL을 생성 할 수 있으며 몇 가지 유사한 도구가 있습니다.

동적으로 WSDL을 생성해야하는 경우, 젠드 프레임 워크 라이브러리를 살펴 걸릴 : 당신이나 다른 사람이 여기에이 문제에 대한 해결책을 찾고 내가 무슨 짓을했는지 경우 Zend_Soap_AutoDiscover

+0

Zend Soap 자동 검색이 활발히 유지 관리되고 있습니다. 나는 그것을 사용하고 그것에 만족한다. –

+2

Ciaran, 저는 회사에서 구현 한 서비스에 대해 생각합니다. Google은 안정적인 앱과 서비스를 제공하지만 새로운 파트너 또는 기존 파트너에게 발생하는 새로운 기능을 요구하므로 수동으로 작업을 열고 작성하는 것은 좋지 않습니다. 올바른 IHMO는 이러한 시나리오가 발생할 때 의존하는 테스트되고 안전한 방법을 활용하는 것입니다. 예를 들어 IT 팀이 변경되면 ... – Dave

9

스튜어트,

을 .

먼저이 스크립트를 얻을 :

http://www.phpclasses.org/browse/download/zip/package/3509/name/php2wsdl-2009-05-15.zip는 다음의 예제 파일을 봐주세요. 그 후 나는 codeigniter를 사용하고 있기 때문에 필자가 필요로하는 방식으로 슬라이스했다.

function wsdl(){ 
    error_reporting(0); 
    require_once(APPPATH."/libraries/WSDLCreator.php"); //Path to the library 
    $test = new WSDLCreator("Webservice", $this->site."/wsdl"); 
    //$test->includeMethodsDocumentation(false); 

    $test->addFile(APPPATH."/controllers/gds.php"); 

    $test->addURLToClass("GDS", $this->site); 

    $test->ignoreMethod(array("GDS"=>"GDS")); 
    $test->ignoreMethod(array("GDS"=>"accessCheck")); 

    $test->createWSDL(); 

    $test->printWSDL(true); // print with headers 
} 

그게 전부 다. Btw, SoapServer 및 SoapClient를 php5 +

에 사용했습니다.
0

Zend_Soap_AutoDiscover는 NuSOAP 대신 사용할 수있는 좋은 방법입니다. 그러나 매우 복잡하고 오류가 발생할 수있는 WSDL 파일을 처음부터 만들 수도 있습니다. 이 프로세스를 쉽게하기 위해 IDE를 사용하여 PHP 함수에 대한 WSDL 파일을 생성하고 PHP SoapServer 클래스에 매개 변수로 전달할 수 있습니다. 당신은이 옵션을 시도 할 수 있습니다 How to generate wsdl for php native soap class