# Zend_Rest_Server

## Einführung

`Zend_Rest_Server` ist ein komplett-feature REST Server.

## Verwenden des REST Servers

### Grundsätzliche Verwendung von Zend_Rest_Server: Klassen

    $server = new Zend_Rest_Server();
    $server->setClass('My_Service_Class');
    $server->handle();

### Grundsätzliche Verwendung von Zend_Rest_Server: Funktionen

    /**
     * Sag Hallo
     *
     * @param string $who
     * @param string $when
     * @return string
     */
    function sayHello($who, $when)
    {
        return "Hallo $who, Gut $when";
    }

    $server = new Zend_Rest_Server();
    $server->addFunction('sayHello');
    $server->handle();

## Aufruf eines Zend_Rest_Server Services

Um ein `Zend_Rest_Server` Service aufzurufen, muß ein `GET`/POST `method` Argument mit einem Wert angegeben werden, welcher der Methode entspricht, die aufgerufen werden soll. Es können anschließend beliebig viele Argumente folgen, die entweder den Namen des Arguments verwenden (z.B. "wer"), oder man kann `arg` verwenden, gefolgt von der nummerischen Position des Arguments (z.B. "arg1").

### Nummerischer Index

Nummerische Argumente verwenden einen 1-basierenden Index.

Um `sayHello` vom obigen Beispiel aufzurufen, kann:

`?method=sayHello&who=Davey&when=Day`

verwendet werden, oder:

`?method=sayHello&arg1=Davey&arg2=Day`

## Senden eines eigenen Status

Wenn Werte zurückgegeben werden, kann man, um einen eigenen Status zurückzugeben, ein Array mit einem `status` Schlüssel zurückgeben.

### Einen eigenen Status zurückgeben

    /**
     * Sag Hallo
     *
     * @param string $who
     * @param string $when
     * @return array
     */
    function sayHello($who, $when)
    {
        return array('msg' => 'Ein Fehler ist aufgetreten', 'status' => false);
    }

    $server = new Zend_Rest_Server();
    $server->addFunction('sayHello');
    $server->handle();

## Eigene XML Antworten zurückgeben

Wenn man eigenes XML zurückgeben will, kann einfach ein `DOMDocument`, `DOMElement` oder `SimpleXMLElement` Objekt zurückgegeben werden.

### Eigenes XML zurückgeben

    /**
     * Sag Hallo
     *
     * @param string $who
     * @param string $when
     * @return SimpleXMLElement
     */
    function sayHello($who, $when)
    {
        $xml ='<?xml version="1.0" encoding="ISO-8859-1"?>
    <mysite>
        <value>Hallo $who! Hoffentlich hast Du einen guten $when</value>
        <code>200</code>
    </mysite>';

        $xml = simplexml_load_string($xml);
        return $xml;
    }

    $server = new Zend_Rest_Server();
    $server->addFunction('sayHello');

    $server->handle();

Die Antwort des Services wird ohne Modifizierungen zum Client zurückgegeben.