Slide 19
Slide 19 text
DESIGN
OBJECT-FUNCTIONAL WEB APPS
class ApplicationContext {
private $httpContext, $staticContext, $runtimeContext;
public function setHttpContext(HttpServer $s, HttpRequest $r) {}
public function setStaticContext(array $env, HttpSession $s) {}
public function setRuntimeContext(Router $r, ServiceManager $s) {}
}
class Request { private $appContext, $target; }
class Response { private $string; }
class ToAppContext implements IArrayTransform { public function __invoke() {} }
class ToRequest implements IContextTransform {} //ToHttpRequest, ToCliRequest,...
class ToAction implements IRequestTransform {} //ToRestfulAction, ...
class ToResponse implements IActionTransform {} //ToHttpResonse, ToCliResponse, ...
class ToOutput implements IResponseTransform {} //ToJsonOutput, ToXmlOutput, ...
$flow = ['ToAppContext', 'ToRequest', 'ToAction', 'ToResponse', 'ToOutput'];
$string = chainAppFlow($flow, $actions, [$_SERVER, $_GET, $_POST /*, ...*/]);
echo $string;