Webservice SOAP

De KumbiaPHP Framework Wiki
Saltar a: navegación, buscar

Modelo: models/services/consulta_service.php

  1. <?php
  2. class ConsultaService {
  3.  
  4.     public function getClientes(){
  5.         $lst = new Cliente();
  6.         $lst = $lst->find();
  7.         $strSync = "";        
  8.  
  9.         $strSync = "<?xml version='1.0' encoding='UTF-8'?>";
  10.         $strSync .= "<clientes>";
  11.         foreach($lst as $cli){
  12.  
  13.             $strSync .="<cliente>";
  14.             $strSync .="<id>" . $cli->id . "</id>";            
  15.             $strSync .="<codigo>" . $cli->codigo . "</codigo>";
  16.             $strSync .="<cedula>" . $cli->cedula . "</cedula>";
  17.             $strSync .="<nombre>" . $cli->nombre . "</nombre>";
  18.             $strSync .="<apellido>" . $cli->apellido . "</apellido>";
  19.             $strSync .="<cumple>" . $cli->fecha_de_nacimiento . "</cumple>";            
  20.             $strSync .="<direccion>" . $cli->direccion . "</direccion>";
  21.             $strSync .="<telefono>" . $cli->telefono . "</telefono>";            
  22.             $strSync .="</cliente>";
  23.         }
  24.         $strSync .= "</clientes>";
  25.  
  26.         return $strSync;
  27.      }
  28.  
  29.      public function modClientes($xmlInput) {
  30.         $c = new Cliente();
  31.         $actualizable = true;
  32.  
  33.         $xml= simplexml_load_string($xmlInput);
  34.  
  35.         foreach ($xml as $objxml){
  36.            $element = $objxml;
  37.  
  38.            $c->codigo = $element->codigo;
  39.            $c->cedula = $element->cedula;
  40.            $c->nombre = $element->nombre;
  41.            $c->apellido = $element->apellido;
  42.            $c->direccion = $element->direccion;
  43.            $c->telefono = $element->telefono;
  44.  
  45.            if($c->save()) {
  46.  
  47.            }else { 
  48.                return false;
  49.            }
  50.         }
  51.  
  52.         return true;
  53.     }
  54. }

Controlador: controllers/consulta_service_controller.php

  1. <?php
  2.  
  3. class ConsultaServiceController extends ApplicationController {
  4.  
  5.     public $template = '';
  6.     public $models = array('ciudad','cliente');
  7.  
  8.     public function impl() {
  9.  
  10.         Load::models("services/consulta_service");
  11.         ini_set("soap.wsdl_cache_enabled", "0");//Para no tener cache en desarrollo
  12.         $server = new SoapServer(null,array('uri' => "http://localhost/kumbia/miapp/consulta_service/impl/"));
  13. 	$server->setClass("ConsultaService");
  14. 	ob_end_clean();
  15. 	$server->handle();
  16.  
  17.         exit;
  18.     }
  19.  
  20.     public function index() {
  21.         $this->render(null);
  22.     }
  23.  
  24. }
  25.  
  26. ?>


Cliente del webservice, en cualquier vista:

  1. <?php
  2.  
  3. $client = new SoapClient(null, array('location' => "hhttp://localhost/kumbia/miapp/consulta_service/impl/",'uri' => "http://test-uri/"));
  4.  
  5. print($client->getClientes());
  6.  
  7. ?>

.