Translations of this page:

Das PHP/JS-Interface

Das schöne am HTTP-Request-System ist, dass der Programmierer Clientseitig (also aus dem JS) eine PHP-Klasse instanzieren kann. Dazu sind verschiedene PHP- bzw. JS-Komponenten nötig, um die sich der Entwickler allerdings (fast) nicht mehr kümmern muss:

Server-Seitig (PHP):

  • service.php, die per HTTP aufgerufene Datei
  • services.inc.php, In dieser Datei werden die Verfügbaren Services definiert
  • core/api_provider.inc.php, Diese Klasse instanziert und verwaltet die Objekte der Services
  • core/stdfuncs.inc.php, stellt allgemeine Funktionen zur Verfügung

Client-Seitig (JS):

  • scripts/core/phpremote.js, Führt HTTP-Requests durch, interpretiert Response und lädt neue Services
  • scripts/core/stdfuncs.js, Bibliothek mit Standard Funktionen

Was ist ein Service?

Ein Service ist die Abstraktion einer API. Von einer Service-Klasse gibt es jeweils zwei Instanzen: Die eine auf der Server-Seite, die andere auf der Client-Seite. Ein Service wird mit seinem Namen aufgerufen. Der Name des Services muss nicht dem PHP-Klassennamen entsprechen.

In der Datei services.inc.php wird definiert unter welchem Servicenamen mit welchen Parametern instanzierte PHP-Klassen laufen sollen.

Beispielinhalt der services.inc.php Datei

$services['timer_zeit']['module']  = "modules/timer/timer_api.inc.php";
$services['timer_zeit']['class']   = "timer_api"; // nicht unbedingt nötig, da Klassen-name gleich ist wie File-Name
$services['timer_zeit']['params']  = array("H:i:s");

In diesem Fall würde dann ein Service mit dem Namen „timer_zeit“ zur Verfügung stehen.

Man kann sich ein Array aller Methoden die dieser Service anbietet abrufen mit dem HTTP-Aufruf

service.php?method=getMethods&parameter[0]=timer_zeit

Die HTTP-Response wäre dann

["__construct", "__sleep", "__wakeup", "getTime"]

Um die Methode getTime aufzurufen wäre dann folgender Request fällig

service.php?service=timer_zeit&method=getTime

AJAX-Aufruf eines Services mit phpremote.js

Die oben geschilderten Details der Serviceaufrufes können mit der Hilfe von phpremote.js erledigt werden. Importierten Sie diese beiden Javascript Dateien:

<script type='text/javascript' src='scripts/core/stdfuncs.js'></script>
<script type='text/javascript' src='scripts/core/phpremote.js'></script>

Danach ist folgendes Möglich:

var timerApi = services.getApi('timer_zeit')   // Starte den Service, macht intern: getMethods
var zeit = timerApi.getTime();                 // Macht HTTP-Request und interpretiert HTTPRespose

services ist ein Objekt dass nach dem importireen von phpremode.js global zut Verfügung steht

 
dev/coreall/interface.txt · Zuletzt geändert: 26.07.2007 15:47 von kaegi
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki