Overview

Namespaces

  • Charcoal
    • App
      • Action
      • Config
      • Handler
      • Middleware
      • Module
      • Route
      • Script
      • ServiceProvider
      • Template

Classes

  • Charcoal\App\Action\AbstractAction
  • Charcoal\App\App
  • Charcoal\App\AppConfig
  • Charcoal\App\AppContainer
  • Charcoal\App\Config\CacheConfig
  • Charcoal\App\Config\DatabaseConfig
  • Charcoal\App\Config\FilesystemConfig
  • Charcoal\App\Config\LoggerConfig
  • Charcoal\App\Config\MemcacheCacheConfig
  • Charcoal\App\Config\MemcacheCacheServerConfig
  • Charcoal\App\Handler\AbstractHandler
  • Charcoal\App\Handler\Error
  • Charcoal\App\Handler\HandlerConfig
  • Charcoal\App\Handler\NotAllowed
  • Charcoal\App\Handler\NotFound
  • Charcoal\App\Handler\PhpError
  • Charcoal\App\Handler\Shutdown
  • Charcoal\App\Middleware\CacheMiddleware
  • Charcoal\App\Module\AbstractModule
  • Charcoal\App\Module\ModuleConfig
  • Charcoal\App\Module\ModuleManager
  • Charcoal\App\Route\ActionRoute
  • Charcoal\App\Route\ActionRouteConfig
  • Charcoal\App\Route\RouteConfig
  • Charcoal\App\Route\RouteManager
  • Charcoal\App\Route\ScriptRoute
  • Charcoal\App\Route\ScriptRouteConfig
  • Charcoal\App\Route\TemplateRoute
  • Charcoal\App\Route\TemplateRouteConfig
  • Charcoal\App\Script\AbstractScript
  • Charcoal\App\ServiceProvider\AppServiceProvider
  • Charcoal\App\ServiceProvider\CacheServiceProvider
  • Charcoal\App\ServiceProvider\DatabaseServiceProvider
  • Charcoal\App\ServiceProvider\FilesystemServiceProvider
  • Charcoal\App\ServiceProvider\LoggerServiceProvider
  • Charcoal\App\ServiceProvider\ViewServiceProvider
  • Charcoal\App\Template\AbstractTemplate
  • Charcoal\App\Template\AbstractWidget
  • Charcoal\App\Template\WidgetBuilder

Interfaces

  • Charcoal\App\Action\ActionInterface
  • Charcoal\App\AppAwareInterface
  • Charcoal\App\Handler\HandlerInterface
  • Charcoal\App\Module\ModuleInterface
  • Charcoal\App\Route\RouteInterface
  • Charcoal\App\Script\CronScriptInterface
  • Charcoal\App\Script\ScriptInterface
  • Charcoal\App\Template\TemplateInterface
  • Charcoal\App\Template\WidgetInterface

Traits

  • Charcoal\App\AppAwareTrait
  • Charcoal\App\CallableResolverAwareTrait
  • Charcoal\App\Script\ArgScriptTrait
  • Charcoal\App\Script\CronScriptTrait
  • Charcoal\App\Script\PathScriptTrait
  • Overview
  • Namespace
  • Class
 1: <?php
 2: 
 3: namespace Charcoal\App\Route;
 4: 
 5: // Dependencies from `PHP`
 6: use InvalidArgumentException;
 7: 
 8: // PSR-7 (http messaging) dependencies
 9: use Psr\Http\Message\RequestInterface;
10: use Psr\Http\Message\ResponseInterface;
11: 
12: // Depedencies from `pimple`
13: use Pimple\Container;
14: 
15: // From `charcoal-config`
16: use Charcoal\Config\ConfigurableInterface;
17: use Charcoal\Config\ConfigurableTrait;
18: 
19: // Intra-module (`charcoal-app`) dependencies
20: use Charcoal\App\Action\ActionInterface;
21: use Charcoal\App\Route\RouteInterface;
22: use Charcoal\App\Route\ActionRouteConfig;
23: 
24: /**
25:  * Action Route Handler.
26:  */
27: class ActionRoute implements
28:     RouteInterface,
29:     ConfigurableInterface
30: {
31:     use ConfigurableTrait;
32: 
33:     /**
34:      * Create new action route
35:      *
36:      * ### Dependencies
37:      *
38:      * **Required**
39:      *
40:      * - `config` — ScriptRouteConfig
41:      *
42:      * **Optional**
43:      *
44:      * - `logger` — PSR-3 Logger
45:      *
46:      * @param array $data Dependencies.
47:      */
48:     public function __construct(array $data)
49:     {
50:         $this->setConfig($data['config']);
51:     }
52: 
53:     /**
54:      * ConfigurableTrait > createConfig()
55:      *
56:      * @param mixed|null $data Optional config data.
57:      * @return ActionRouteConfig
58:      */
59:     public function createConfig($data = null)
60:     {
61:         return new ActionRouteConfig($data);
62:     }
63: 
64:     /**
65:      * @param Container         $container A container instance.
66:      * @param RequestInterface  $request   A PSR-7 compatible Request instance.
67:      * @param ResponseInterface $response  A PSR-7 compatible Response instance.
68:      * @return ResponseInterface
69:      */
70:     public function __invoke(Container $container, RequestInterface $request, ResponseInterface $response)
71:     {
72:         $config = $this->config();
73: 
74:         $actionController = $config['controller'];
75: 
76:         $action = $container['action/factory']->create($actionController);
77:         $action->init($request);
78: 
79:         // Set custom data from config.
80:         $action->setData($config['action_data']);
81: 
82:         // Run (invoke) action.
83:         return $action($request, $response);
84:     }
85: }
86: 
API documentation generated by ApiGen