5.3. Zend_Rest_Server
Prev | Chapter 5. Zend_Rest | Next

## 5.3. Zend_Rest_Server

### 5.3.1. Introduction

Zend_Rest_Server is intended as a fully-featured REST server.

### 5.3.2. REST Server Usage

Example 5.5. Basic Zend_Rest_Server Usage - Classes

    <?php
    require_once 'Zend/Rest/Server.php';
    require_once 'My/Service/Class.php';

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

Example 5.6. Basic Zend_Rest_Server Usage - Functions

    <?php
    require_once 'Zend/Rest/Server.php';

    function sayHello($who, $when)
    {
    	return "Hello $who, Good $when";
    }

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

### 5.3.3. Calling a Zend_Rest_Server Service

To call a `Zend_Rest_Server` service, you must supply a GET/POST `method` argument with a value that is the method you wish to call. You can then follow that up with any number of arguments using either the name of the argument (i.e. "who") or using `arg` following by the numeric position of the argument (i.e. "arg1").

| Note
Numeric arguments use a 1-based index.

To call `sayHello` from the example above, you can use either:

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

or:

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

### 5.3.4. Sending Custom Statuses

When returning values, to return a custom status, you may return an array with a `status` key.

Example 5.7. Returning Custom Statuses

    <?php
    require_once 'Zend/Rest/Server.php';

    function sayHello($who, $when)
    {
    	return array('msg' => "An Error Occurred", 'status' => false);
    }

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

### 5.3.5. Returning Custom XML Responses

If you wish to return custom XML, simply return a `DomDocument`, `DomElement` or `SimpleXMLElement` object.

Example 5.8. Return Custom XML

    <?php
    require_once 'Zend/Rest/Server.php';

    function sayHello($who, $when)
    {
    	$xml ='<?xml version="1.0" encoding="ISO-8859-1"?>
    <mysite>
    	<value>Hey $who! Hope you're having a good $when</value>
    	<code>200</code>
    </mysite>';

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

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

    $server->handle();
    ?>

The response from the service will be returned without modification to the client.

Prev | Up | Next
5.2. Zend_Rest_Client | Home | Chapter 6. Zend_XmlRpc