PHP-Klasse sws

PHP Klasse simple web service. Ein Wrapper, mit dem (public) Methoden einer PHP-Klasse als Webservice angesprochen werden können.

Einleitung

Oft schreibt man eine PHP-Klasse ohne dass man sie zunächst als Webservice verbinden möchte. Meine Klasse sws - simple web service - bildet einen Wrapper.

sws funktioniert so:

Mit einem Http-Request werden Name der Klasse, Methode und Argumente übergeben. Sws initialisiert die Klasse und ruft die angegebene Methode mit den Argumenten auf. Die Rückgabe erfolgt raw (für Strings, Integer, Bool) oder JSON (zusätzl. auch Arrays).

Damit nicht beliebige Klassen und Methoden aufrufbar sind, wird sws mit einer Konfiguration initialisiert, die das Set der gewünschten Klassen und Methoden definiert.

Voraussetzungen

PHP5

Einschränkungen

  • Bei Methoden sind als Parameter nur einfache Variablen (integer, Strings, Bool) und Arrays möglich. Referenzen oder PHP-Obkjekte lassen sich nicht als Eingabeparameter verwenden.
  • Die Rückgabewerte der Methoden müssen ebenfalls Integer, String, Bool oder Array sein.
  • es werden nur public Methoden der Klasse unterstützt (an sich logisch, aber ich erwähne es mal trotzdem)
  • POST und GET sind zugelassen - beide Methoden sind dabei gleichwertig (sws ist kein REST)
  • im Moment werden Klassen immer ohne Parameter initialisiert. Ich plane, einen Aufrufparameter hinzuzufügen: $o = new [Klassenname]([Argument(e)])

Methoden einer PHP-Klasse, die die Beschränkung bei Ein- und Ausgabe nicht einhalten, sollten gar nicht in der Konfiguration aufgenommen werden.

Demo

Das Frontend ist gleichermassen Dokumentation, Spielwiese und Explorer der freigegebenen Klassen und Methoden. Mit einer Demo-PHP-Klasse, die nur Datum und Zeit anzeigt, können Sie ein wenig probieren:

SWS-Demo

Installation

Download

Der Download umfasst die sws-Klasse und die Daten des Demos.

sws.zip (7kB)

Auspacken

  • Legen Sie einen Ordner im Webroot an - z.B. "sws"
  • Kopieren Sie die index.php in den Ordner "sws"
  • Kopieren Sie die Klassen *class.php und die JSON-Datei in den Ordner, wo die Klassen liegen - z.B. [webroot]/php/classes/

erster Aufruf

Bearbeiten Sie die [webroot]/sws/index.php - passen Sie, falls Dateien an einem anderen Ort entpackt wurden, an:

<?php

require_once("../php/classes/sws.class.php");

$aConfig=json_decode(file_get_contents("../php/classes/swsdemo.json"), 1);
$oSws=new sws($aConfig);
$oSws->run();

Die JSON Datei beinhaltet eine Definition, dass die Klasse swsdemo.class.php als Webservie angeprochen werden kann (es können auch mehrere Klassen definiert sein). Die Demo-Klasse zeigt einfach nur Zeit und Datum in verschiedenen Varianten an und ist nicht wirklich sinnvoll - ausser zu Demonstrationszwecken.

Rufen Sie dann im Webbrowser /sws/ auf - z.B.: http://localhost/sws/

Es sollte dann eine Seite "SWS :: simple web service" erscheinen (die Fehlermeldung kann man zunächst ignorieren). Unterhalb "Explore" ist eine Klasse "swsdemo" aufgeführt.

Mit Klick auf das [+] klappt die für diese Klasse freigegebenen Methoden auf. Fehlermeldung der letzten Methode ist bewusst - so würde eine falsche Konfiguration dargestellt werden.

Mit Klick auf einen Methodennamen klappen Details auf. Es werden Infos aus dem PHPDOC gelesen. Die Schaltflächen "raw" und "json" rufen die jeweiligen Methoden auf und erzwingen das jeweilige Ausgabeformat.

Zum Lernen:
In der Testklasse können Sie alles anklicken und herumprobieren.

  • Schauen Sie an, wie die URLs aufgebaut sind und was sich jeweils ändert
  • Öffnen Sie die Demo-Dateien "swsdemo.json" und "swsdemo.class.php"