Dopo molto tempo webservices che consumano altri toccavano mi creo il mio primo server SOAP PHP e, francamente, sembrava davvero semplice ed intuitivo. Si crea una classe con metodi che stanno per esporre al ws e il servizio viene automaticamente creato per loro, così semplice come sembra.

  1. <? Php
  2. ; $ WSDL = "miclase.wsdl";
  3. SoapServer ( $wsdl ) ; $ Sapone = new SoapServer ($ wsdl);
  4. ( 'MiClase' ) ; $ Sapone -> setClass ('MyClass');
  5. ( ) ; $ Sapone -> handle ();
  6. / / Classe che gestisce il ws
  7. class MyClass {
  8. public function MyClass () {
  9. / / Il tuo codice
  10. }
  11. / **
  12. *
  13. * @ Param stringa $ email
  14. * @ Stringa Return
  15. * /
  16. $email ) { funzione is_email_available pubblico ($ email) {
  17. / / Il tuo codice ...
  18. ; restituisce "OK";
  19. }
  20. / **
  21. *
  22. * @ Param stringa $ telefono
  23. * @ Param stringa $ email
  24. * @ Stringa Return
  25. * /
  26. $phone , $email ) { funzione register_user pubblico ($ telefono, $ email) {
  27. / / Il tuo codice ...
  28. ; restituisce "OK";
  29. }
  30. / **
  31. *
  32. * @ Param stringa $ telefono
  33. * @ Stringa Return
  34. * /
  35. $phone ) { funzione downgrade_user pubblico ($ telefono) {
  36. / / Il tuo codice ...
  37. ; restituisce "OK";
  38. }
  39. }
  40. ?>

Questo creerà automaticamente il nostro webservice con i tre metodi pubblici. Ma aspettate, manca qualcosa, prima di tutto definire un 'miclase.wsdl ". Che cosa è? Da dove viene?

In realtà, questo è il problema principale quando si crea un webservice SOAP con PHP, WSDL non viene generato automaticamente, ma si deve scrivere a mano. Per risolvere abbiamo libreria PHP WSDL Generator che deve passare solo la classe da cui si estrae il WSDL e lo fa per noi icon smile Mi primer webservice en PHP (chispas) webservice soap PHP . Che tutto funzioni bene è necessario che i nostri metodi di classe sono ben documentati come appaiono nel precedente esempio, quindi WSDL Generator sa configurare i tipi di dati di input e parametri di output dei metodi.

Ecco un esempio:

  1. <? Php
  2. "wsdl2php/WSDLCreator.php" ) ; require_once ("wsdl2php/WSDLCreator.php");
  3. WSDLCreator ( "miclase" , "http://ws.tudominio.com/wsdl" ) ; $ Prova = new WSDLCreator ("MyClass", "http://ws.tudominio.com/wsdl");
  4. ( "miclase.php" ) ; $ Test -> addFile ("MyClass.php");
  5. ( "http://tudominio.com" ) ; $ Test -> setClassesGeneralURL ("http://tudominio.com");
  6. ( "MiClase" , "http://ws.tudominio.com/miclase.php" ) ; $ Test -> addURLToClass ("MyClass", "http://ws.tudominio.com/miclase.php");
  7. ( array ( "MiClase" => "MiClase" ) ) ; $ Test -> ignoreMethod ( matrice ("MyClass" => "MyClass"));
  8. ( ) ; $ Test -> createWSDL ();
  9. ( dirname ( __FILE__ ) . "/miclase.wsdl" , false ) ; $ Test -> saveWSDL ( dirname (__ FILE__) "/ miclase.wsdl", false.);
  10. ?>

Questo piccolo codice genererà il file WSDL dal nostro webservice. Si vede solo il file raccontiamo la nostra classe (che abbiamo scritto sopra), la classe che vogliamo mappare l'URL webservice (endpoint) e, inoltre, si dimostra che ignora il costruttore della classe non sarà un metodo il nostro webservice. Tutto qui.

Ora provate il servizio web, per esempio dal Eclipse Web Service Explorer:

wseclipse Mi primer webservice en PHP (chispas) webservice soap PHP Dopo aver dato il percorso per il WSDL, http://ws.tudominio.com/miclase.php?wsdl, vedere i tre metodi che abbiamo discusso e possiamo cercare di usarli.

Non ha mai avuto la necessità di creare un server SOAP, ma è stato davvero facile. Ora sto cercando modi per restituire tipi di dati complessi, ma che sarà nel prossimo capitolo icon razz Mi primer webservice en PHP (chispas) webservice soap PHP .