public function getCsrfToken($regenerate = false) { /** @var Session $session */ $session = $this->di->share('session'); $token = $session->get('csrf'); if (!$token || $regenerate) { $token = $this->generateRandomNumber(32, false); $session->set('csrf', $token); } return $token; }
public function run() { $router = $this->injector->getInstance(Router::class); $controllerName = ucfirst(strtolower($router->getController())) . 'Controller'; try { $controller = $this->injector->getInstance($controllerName); } catch (DependencyInjection_Exception $ex) { exit('Erreur 404'); } catch (Exception $ex) { exit('Erreur 500'); } $actionName = strtolower($router->getAction()) . 'Action'; if (!method_exists($controller, $actionName)) { exit('Erreur 404'); } $controller->{$actionName}(); }
/** * Retrieves a service instance * * @param string $service - The service name * @return mixed */ public static function get($service) { return self::$services->get($service); }
/** * @covers DependencyInjection::normalizeClassName * @todo Implement testNormalizeClassName(). */ public function testNormalizeClassName() { $this->assertEquals(A::class, DependencyInjection::normalizeClassName(A::class)); $this->assertEquals('A', DependencyInjection::normalizeClassName('\\A')); }
public function getCsrfToken() { return $this->di->share('security')->getCsrfToken(); }
public function createInstance(DependencyInjection $injector, ReflectionClass $class) { if (!$class->isInstantiable()) { throw new DependencyInjection_Exception('The class ' . $class->name . ' is not instantiable'); } $constructor = $class->getConstructor(); if ($constructor === null) { //Pas de constructeur => créé tout simplement l'instance return $class->newInstanceWithoutConstructor(); } //S'il y a une constructeur essaye de récupérer les arguments $args = []; foreach ($constructor->getParameters() as $param) { if ($param->getClass() === null) { //Pas de classe définie if ($param->isDefaultValueAvailable()) { //essaye de mettre la valeur par défaut $args[] = $param->getDefaultValue(); } else { if (!$param->allowsNull()) { //Pas de valeur par défaut, essaye de mettre null throw new DependencyInjection_Exception('The parameter ' . $param->name . ' of ' . $class->name . ' constructor don\'t have a default value'); } $args[] = null; } } else { //Une classe est disponible, utilise l'injecteur $args[] = $injector->getInstance($param->getClass()->name); } } //Créé l'instance avec les arguments récupérés return $class->newInstanceArgs($args); }
public function createInstance(\DependencyInjection $injector, \ReflectionClass $class) { $config = $injector->getInstance(Config::class)->database; return new Database($config->dsn, $config->username, $config->password); }