/** * @return mixed */ function run() { $routes = new RouteCollection(); /** @var ConfigManager $configManager */ $configManager = $this->serviceManager->get('ConfigManager'); foreach ($configManager->get('routes') as $rota => $values) { $routes->add($rota, new Route($values['route'], array('controller' => $values['controller'], 'action' => $values['action']))); } /*@var $context RequestContext */ $context = $this->serviceManager->get('RequestManager')->getContext(); $matcher = new UrlMatcher($routes, $context); $errorController = $this->getServiceManager()->get('ErrorController'); try { $parameters = $matcher->match($context->getPathInfo()); $controller = $this->getServiceManager()->get($parameters['controller']); $action = $this->getNomeAction($parameters['action']); if (false == method_exists($controller, $action)) { throw new Exception(sprintf('O Controller %s não possui o método %s', get_class($controller), $action)); } $actionParameters = $this->getActionParameters($parameters); if (true == method_exists($controller, 'beforeDispatch')) { call_user_func(array($controller, 'beforeDispatch')); } return call_user_func_array(array($controller, $action), $actionParameters); } catch (ResourceNotFoundException $ex) { return $errorController->actionError404(); } catch (MethodNotAllowedException $ex) { return $errorController->actionError500($ex); } catch (Exception $ex) { return $errorController->actionError500($ex); } }
/** * @param ServiceManager $serviceManager * @return MailerManager */ public function __invoke(ServiceManager $serviceManager) { /* @var $configManager ConfigManager */ $configManager = $serviceManager->get('ConfigManager'); $renderer = $serviceManager->get('CupRenderer'); $bypassEmail = $configManager->get('bypassEmailSend'); return new MailerManager($configManager->get('mailer'), $renderer, $configManager->get('dumpEmailOnScreen'), $bypassEmail); }
/** * @param ServiceManager $serviceManager * @return ObjectMapper */ public function __invoke(ServiceManager $serviceManager) { $db = $serviceManager->get('PDO'); $cpr = $serviceManager->get('RequestManager'); /** @var ConfigManager $configManager */ $configManager = $serviceManager->get('ConfigManager'); $debug = $configManager->get('debug'); return new ObjectMapper($db, $cpr, $debug); }
public function __invoke(ServiceManager $serviceManager) { /* @var $configManager ConfigManager */ $configManager = $serviceManager->get('ConfigManager'); $urlGenerator = $serviceManager->get('UrlGenerator'); $rendererConfig = $configManager->get('renderer'); $siteConfig = $configManager->get('site'); return new CupRenderer($rendererConfig['pastaTemplates'], $rendererConfig['pastaViews'], $siteConfig['titulo'], $urlGenerator); }
/** * @param ServiceManager $serviceManager * @return FlashMessenger */ public function __invoke(ServiceManager $serviceManager) { /** @var ConfigManager $config */ $config = $serviceManager->get('ConfigManager'); $sessionId = $config->getNode('flash-messenger')->get('session-id'); return new FlashMessenger($sessionId); }
/** * @param ServiceManager $serviceManager * @return PDO */ public function __invoke(ServiceManager $serviceManager) { /* @var $configManager ConfigManager */ $configManager = $serviceManager->get('ConfigManager'); $databaseConfig = $configManager->get('database'); return new PDO("mysql:host=" . $databaseConfig['host'] . ";dbname=" . $databaseConfig['dbname'], $databaseConfig['user'], $databaseConfig['password']); }
/** * @param ServiceManager $serviceManager * @return EntityManager */ public function __invoke(ServiceManager $serviceManager) { /* @var $configManager ConfigManager */ $configManager = $serviceManager->get('ConfigManager'); $databaseConfig = $configManager->get('database'); $doctrineConfig = $configManager->get('doctrine'); $connectionParams = array('dbname' => $databaseConfig['dbname'], 'user' => $databaseConfig['user'], 'password' => $databaseConfig['password'], 'host' => $databaseConfig['host'], 'driver' => 'pdo_mysql', 'charset' => 'utf8', 'driverOptions' => array(1002 => 'SET NAMES utf8')); $entitiesPaths = $doctrineConfig['entitiesPaths']; $proxyDir = $doctrineConfig['proxyDir']; $isDevMode = $configManager->get('debug'); $setupConfig = Setup::createAnnotationMetadataConfiguration($entitiesPaths, $isDevMode, $proxyDir); $setupConfig->addCustomStringFunction('rand', 'Mapado\\MysqlDoctrineFunctions\\DQL\\MysqlRand'); $setupConfig->addCustomStringFunction('round', 'Mapado\\MysqlDoctrineFunctions\\DQL\\MysqlRound'); $setupConfig->addCustomStringFunction('date', 'Mapado\\MysqlDoctrineFunctions\\DQL\\MysqlDate'); $setupConfig->addCustomStringFunction('date_format', 'Mapado\\MysqlDoctrineFunctions\\DQL\\MysqlDateFormat'); $entityManager = EntityManager::create($connectionParams, $setupConfig); $platform = $entityManager->getConnection()->getDatabasePlatform(); $platform->registerDoctrineTypeMapping('enum', 'string'); return $entityManager; }
/** * @throws \Cupcake\Service\Exception\ContainerException * @throws \Cupcake\Service\Exception\NotFoundException */ public function testThrowsExceptionWhenGettingANonExistentService() { $service = new ServiceManager(); $this->setExpectedException('Cupcake\\Service\\Exception\\NotFoundException'); $service->get('NonExistentService'); }
/** * @param ServiceManager $serviceManager * @return UrlGenerator */ function __invoke(ServiceManager $serviceManager) { return new UrlGenerator($serviceManager->get('RequestManager')); }