<?php
require_once(AMFPHP_BASE . "shared/app/BasicActions.php");
require_once(AMFPHP_BASE . "shared/app/Constants.php");
require_once(AMFPHP_BASE . "shared/app/Globals.php");
require_once(AMFPHP_BASE . "shared/exception/MessageException.php");
if(AMFPHP_PHP5)
{
include_once(AMFPHP_BASE . "shared/util/CompatPhp5.php");
}
else
{
include_once(AMFPHP_BASE . "shared/util/CompatPhp4.php");
}
/**
* This basic gateway is a base class for all simple RPC types (that is, RPC which doesn't
* allow batching)
*/
class BasicGateway
{
function BasicGateway()
{
if(AMFPHP_PHP5)
{
//Set gloriously nice error handling
include_once(AMFPHP_BASE . "shared/app/php5Executive.php");
include_once(AMFPHP_BASE . "shared/exception/php5Exception.php");
}
else
{
//Cry
include_once(AMFPHP_BASE . "shared/app/php4Executive.php");
include_once(AMFPHP_BASE . "shared/exception/php4Exception.php");
}
$this->registerActionChain();
}
/**
* Sets the base path for loading service methods.
*
* Call this method to define the directory to look for service classes in.
* Relative or full paths are acceptable
*
* @param string $path The path the the service class directory
*/
function setBaseClassPath($value) {
$path = realpath($value . '/') . '/';
$GLOBALS['amfphp']['classPath'] = $path;
}
function service()
{
//Process the arguments
$body = $this->createBody();
foreach($this->actions as $key => $action)
{
$result = $action($body); // invoke the first filter in the chain
if($result === false)
{
//Go straight to serialization actions
$serAction = 'serializationAction';
$serAction($body);
break;
}
}
echo $body->getResults();
}
/**
* Add a class mapping for adapters
*/
function addAdapterMapping($key, $value)
{
$GLOBALS['amfphp']['adapterMappings'][$key] = $value;
}
/**
* This function should overriden by the gateways
*/
function createBody()
{
}
/**
* Create the chain of actions
* Subclass gateway and overwrite to create a custom gateway
*/
function registerActionChain()
{
}
}
?>