SOAP Web Service con PHP: il server
Per realizzare il nostro server utilizzeremo la classe SoapServer
inclusa nell'estensione php-soap
. La classe prende in ingresso il path del file WSDL ed un array di opzioni.
Prima di iniziare aggiungiamo però qualche riga di codice necessaria al funzionamento del nostro esempio. Dato che siamo in un ambiente di sviluppo disabilitiamo la cache WSDL per evitare problemi e definiamo una classe Book
necessaria per lo scambio di dati tra client e server:
//server.php
ini_set("soap.wsdl_cache_enabled","0");
class Book
{
public $name;
public $year;
}
A questo punto siamo pronti per creare il nostro server:
$server = new SoapServer("books.wsdl", [
'classmap' => [
'book' => 'Book',
]
]);
$server->addFunction('getBook');
$server->handle();
I parametri del costruttore sono, come già anticipato, i seguenti:
- il path del file WSDL;
- un array di opzioni. Nel nostro caso abbiamo passato un ulteriore array chiamato
classmap
che ci consente di mappare i tipi complessi definiti nel file WSDL direttamente sulle nostre classi PHP. In questo caso il tipobook
definito neitypes
sarà mappato sulla nostra classeBook
già definita.
Una volta istanziata la classe andremo ad esporre le funzioni che vogliamo utilizzare – in questo caso getBook
– e poi a richiamare il metodo handle()
che si occuperà di processare la richiesta che arriva dal client.
Non resta che definire la funzione getBook
che riceverà in ingresso un intero e restituirà al client un oggetto di tipo Book
:
function getBook($bookId)
{
//simulazione di una ricerca. In un caso reale probabilmente faremo
//una query sul database per restituire l'oggetto
$book = new Book();
$book->name = 'The Lord of the Rings';
$book->year = 2017;
return $book;
}
Il codice completo del file è il seguente:
<?php
ini_set("soap.wsdl_cache_enabled","0");
class Book
{
public $name;
public $year;
}
$server=new SoapServer("books.wsdl",[
'classmap'=>[
'book'=>'Book',
]
]);
$server->addFunction('getBook');
$server->handle();
function getBook($bookId)
{
//simulazione di una ricerca. In un caso reale probabilmente faremo
//una query sul database per restituire l'oggetto
$book = new Book();
$book->name = 'The Lord of the Rings';
$book->year = 2017;
return $book;
}
Se vuoi aggiornamenti su PHP inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Marco Agnoli, Build 2014 e le novità in MS con Satya Nadella
Marco Agnoli ci parla delle novità più importanti della Build 2014 e delle innovazioni portate da Satya Nadella come nuovo […]