Ejemplo n.º 1
0
 /**
  * Bootstraps the backend. This function registers an auto loader, parses the configuration
  * file, configures error handling and logging and finally hands over control to the
  * Router.
  * Both the configuration and the logger instance are stored in the 
  * Dashboard\Backend\Application\LifeCycle\RequestScope, with the respective keys *config* 
  * and *logger*.
  *
  * @param \stdClass $config The configuration object.
  * @return void
  */
 public function bootstrap(\stdClass $config)
 {
     \spl_autoload_register('Dashboard\\Backend\\Application\\Control\\Autoloader::autoload', true, true);
     $this->configureErrorHandling();
     $config = new Config($config);
     $sessionService = new Domain\Session\SessionService();
     $session = $sessionService->createSession($config->get('session'));
     $session->start();
     $psrService = new Domain\Psr\PsrService();
     RequestScope::instance()->set('config', $config);
     RequestScope::instance()->set('logger', $psrService->createLogger($config));
     RequestScope::instance()->set('session', $session);
 }
Ejemplo n.º 2
0
 public function route(Request $request) : Response
 {
     $module = $request->getParameter('module');
     $action = $request->getParameter('action');
     $value = $request->getParameter('value');
     $moduleConfig = null;
     $globalConfig = RequestScope::instance()->get('config');
     if ($globalConfig->get('modules')->isDefined($module)) {
         $moduleConfig = $globalConfig->get('modules')->get($module);
     }
     $serviceClass = 'Dashboard\\Backend\\Application\\' . \ucfirst($module) . '\\Service';
     $filteredParameters = $this->filterParameters($request->getParameters(), array('module', 'action'));
     $serviceInstance = new $serviceClass($moduleConfig);
     $actionResult = $serviceInstance->{$action}($filteredParameters);
     $response = new Response($actionResult);
     return $response;
 }
Ejemplo n.º 3
0
 public function __construct()
 {
     $this->config = RequestScope::instance()->get('config')->get('db');
 }
Ejemplo n.º 4
0
 public static final function handleError(int $errno, string $errstr, string $errfile = '', int $errline = 0, array $errcontext = array()) : bool
 {
     $psrService = new Domain\Psr\PsrService();
     try {
         $logger = null;
         $scope = RequestScope::instance();
         $message = $errstr . ' in file ' . $errfile . ' at line ' . $errline;
         if ($scope->isDefined('logger')) {
             $logger = $scope->get('logger');
         } else {
             // To be able to handle errors before the Logger has been created,
             // we must create the Logger here. This happens for instance when
             // the Backend::bootstrap() method has not yet finished.
             // Errors can also occur before the configuration has been parsed.
             // If that is the case, use a fake logger which just prints
             // to stderr.
             if ($scope->isDefined('config')) {
                 $logger = $psrService->createLogger(RequestScope::instance()->get('config'));
             } else {
                 $logger = new PreBootstrapLogger();
             }
         }
         switch ($errno) {
             case E_ERROR:
                 $logger->emergency($message, $errcontext);
                 break;
             case E_WARNING:
                 $logger->warning($message, $errcontext);
                 break;
             case E_NOTICE:
                 $logger->notice($message, $errcontext);
                 break;
             case E_CORE_ERROR:
                 $logger->emergency($message, $errcontext);
                 break;
             case E_CORE_WARNING:
                 $logger->warning($message, $errcontext);
                 break;
             case E_COMPILE_ERROR:
                 $logger->emergency($message, $errcontext);
                 break;
             case E_COMPILE_WARNING:
                 $logger->warning($message, $errcontext);
                 break;
             case E_USER_ERROR:
                 $logger->emergency($message, $errcontext);
                 break;
             case E_USER_WARNING:
                 $logger->warning($message, $errcontext);
                 break;
             case E_USER_NOTICE:
                 $logger->notice($message, $errcontext);
                 break;
             case E_STRICT:
                 $logger->debug($message, $errcontext);
                 break;
             case E_RECOVERABLE_ERROR:
                 $logger->critical($message, $errcontext);
                 break;
             case E_DEPRECATED:
                 $logger->notice($message, $errcontext);
                 break;
             case E_USER_DEPRECATED:
                 $logger->notice($message, $errcontext);
                 break;
             default:
                 $logger->info($message, $errcontext);
                 break;
         }
     } catch (\Throwable $ex) {
         $fd = @\fopen('php://stderr', 'w');
         @\fwrite($fd, "Error '{$errstr}' in file '{$errfile}' at line '{$errline}'\n");
         @\fclose($fd);
     }
     // Stop handling errors after this.
     return true;
 }