/** * Override events manager default in Phalcon * @return \Phalex\Di\Di */ protected function setEventsManager() { $ev = new EventsManager(); $ev->enablePriorities(true); $ev->collectResponses(true); $this->set('eventsManager', $ev, true); return $this; }
/** * * @param Di $diFactory */ public function __construct(Di $diFactory) { $this->diFactory = $diFactory; $this->loader = new Loader(); $ev = new EventsManager(); $ev->enablePriorities(true); $ev->collectResponses(true); $diFactory->set('autoloaderEventsManager', $ev, true); $this->loader->setEventsManager($ev); }
public function __construct(Di $di) { parent::__construct(); $this->di = $di; $eventsManager = new EventsManager(); $eventsManager->enablePriorities(true); $eventsManager->collectResponses(true); $di->set('eventsManager', $eventsManager, true); $this->setEventsManager($eventsManager); $this->setDI($di); $this->setDefaultAction('index'); $this->setDefaultController('index'); }
/** * Register the services here to make them general or register in the * ModuleDefinition to make them module-specific */ protected function _registerServices() { /** * The application wide configuration */ $config = (include __DIR__ . '/../../../config/config.php'); $this->di->set('config', $config); /** * Setup an events manager with priorities enabled */ $eventsManager = new EventsManager(); $eventsManager->enablePriorities(true); $this->setEventsManager($eventsManager); /** * Register namespaces for application classes */ $loader = new Loader(); $loader->registerNamespaces(['App\\Common\\Lib\\Application' => __DIR__, 'App\\Common\\Lib\\Application\\Controllers' => __DIR__ . '/Controllers/', 'App\\Common\\Lib\\Application\\Models' => __DIR__ . '/Models/', 'App\\Common\\Lib\\Application\\Libraries' => __DIR__ . '/Libraries/', 'App\\Common\\Lib\\Application\\Router' => __DIR__ . '/router/', 'App\\Common\\Lib\\Application\\Responses' => __DIR__ . '/Responses/', 'App\\Common\\Lib\\Application\\Exceptions' => __DIR__ . '/Exceptions/'], true)->register(); /** * Registering the application wide router with the standard routes set */ $this->di->set('router', new ApplicationRouter()); /** * Return array of the Collections, which define a group of routes, from * routes/collections. These will be mounted into the app itself later. */ $this->di->setShared('collections', function () { return include __DIR__ . '/routes/routeLoader.php'; }); /** * Include function helpers */ include __DIR__ . '/helpers/functionHelper.php'; include __DIR__ . '/helpers/PasswordHash.php'; /** * Specify the use of metadata adapter */ $this->di->set('modelsMetadata', '\\Phalcon\\Mvc\\Model\\Metadata\\' . $config->application->models->metadata->adapter); /** * Specify the annotations cache adapter */ $this->di->set('annotations', '\\Phalcon\\Annotations\\Adapter\\' . $config->application->annotations->adapter); }
/** * Bootstrap constructor. */ public function __construct() { $di = new FactoryDefault(); $em = new EventsManager(); $em->enablePriorities(true); $config = $this->initConfig(); // Register the configuration itself as a service $di->setShared('config', $config); $this->app = new Application(); $this->initLogger($di, $config, $em); $this->initLoader($di, $config, $em); foreach ($this->loaders as $service) { $serviceName = ucfirst($service); $this->{'init' . $serviceName}($di, $config, $em); } $di->setShared('eventsManager', $em); $di->setShared('app', $this->app); $this->app->setEventsManager($em); $this->app->setDI($di); }
/** * Returns the internal event manager * * @return \Phalcon\Events\ManagerInterface */ public function getEventsManager() { if (!is_object(parent::getEventsManager())) { $em = $this->getUserOption('eventsManager'); if (!is_object($em)) { $em = new EventsManager(); } $em->enablePriorities(true); $this->setEventsManager($em); } return parent::getEventsManager(); }
/** * Configuration application default DI * * @return FactoryDefault| CLI */ public function getDI() { if ($this->di) { return $this->di; } if ($this->appMode == 'cli') { $di = new FactoryDefault\CLI(); } else { $di = new FactoryDefault(); } //PHP5.3 not support $this in closure $self = $this; /********************************** * DI initialize for MVC core ***********************************/ //$di->set('application', $this); //call loadmodules will overwrite this $di->set('moduleManager', function () use($di) { $moduleManager = new ModuleManager(); $moduleManager->setEventsManager($di->getEventsManager()); return $moduleManager; }, true); //System global events manager $di->set('eventsManager', function () use($di) { $eventsManager = new EventsManager(); $eventsManager->enablePriorities(true); // dispatch caching event handler $eventsManager->attach("dispatch", new DispatchInterceptor(), -1); $eventsManager->enablePriorities(true); return $eventsManager; }, true); $di->set('config', function () use($self) { return $self->diConfig(); }, true); $di->set('router', function () use($self) { return $self->diRouter(); }, true); $di->set('dispatcher', function () use($di) { $dispatcher = new Dispatcher(); $dispatcher->setEventsManager($di->getEventsManager()); return $dispatcher; }, true); $di->set('modelsMetadata', function () use($self) { return $self->diModelsMetadata(); }, true); $di->set('modelsManager', function () use($di) { $config = $di->getConfig(); ModelManager::setDefaultPrefix($config->dbAdapter->prefix); //for solving db master/slave under static find method $modelsManager = new ModelManager(); return $modelsManager; }); $di->set('view', function () use($di) { $view = new View(); $view->setViewsDir(__DIR__ . '/views/'); $view->setEventsManager($di->getEventsManager()); return $view; }); $di->set('session', function () use($self) { return $self->diSession(); }); $di->set('tokenStorage', function () use($self) { return $self->diTokenStorage(); }, true); /********************************** * DI initialize for database ***********************************/ $di->set('dbMaster', function () use($self) { return $self->diDbMaster(); }, true); $di->set('dbSlave', function () use($self) { return $self->diDbSlave(); }, true); $di->set('transactions', function () use($di) { $transactions = new \Phalcon\Mvc\Model\Transaction\Manager(); $transactions->setDbService('dbMaster'); return $transactions; }, true); /********************************** * DI initialize for cache ***********************************/ $di->set('globalCache', function () use($self) { return $self->diGlobalCache(); }, true); $di->set('viewCache', function () use($self) { return $self->diViewCache(); }, true); $di->set('modelsCache', function () use($self) { return $self->diModelsCache(); }, true); $di->set('apiCache', function () use($self) { return $self->diApiCache(); }, true); $di->set('fastCache', function () use($self) { return $self->diFastCache(); }, true); /********************************** * DI initialize for queue ***********************************/ $di->set('queue', function () use($di) { $config = $di->getConfig(); $client = new \GearmanClient(); $client->setTimeout(1000); foreach ($config->queue->servers as $key => $server) { $client->addServer($server->host, $server->port); } return $client; }, true); $di->set('worker', function () use($di) { $config = $di->getConfig(); $worker = new \GearmanWorker(); foreach ($config->queue->servers as $key => $server) { $worker->addServer($server->host, $server->port); } return $worker; }, true); /********************************** * DI initialize for email ***********************************/ $di->set('mailer', function () use($self) { return $self->diMailer(); }, true); $di->set('mailMessage', 'Eva\\EvaEngine\\MailMessage'); $di->set('smsSender', function () use($self) { return $self->diSmsSender(); }, true); /********************************** * DI initialize for helpers ***********************************/ $di->set('url', function () use($di) { $config = $di->getConfig(); $url = new UrlResolver(); $url->setVersionFile($config->staticBaseUriVersionFile); $url->setBaseUri($config->baseUri); $url->setStaticBaseUri($config->staticBaseUri); return $url; }, true); $di->set('escaper', 'Phalcon\\Escaper'); $di->set('tag', function () use($di, $self) { Tag::setDi($di); $self->registerViewHelpers(); return new Tag(); }); $di->set('flash', 'Phalcon\\Flash\\Session'); $di->set('placeholder', 'Eva\\EvaEngine\\View\\Helper\\Placeholder'); $di->set('cookies', function () { $cookies = new \Phalcon\Http\Response\Cookies(); $cookies->useEncryption(false); return $cookies; }); $di->set('translate', function () use($self) { return $self->diTranslate(); }); $di->set('fileSystem', function () use($self) { return $self->diFileSystem(); }); $di->set('logException', function () use($di) { $config = $di->getConfig(); return new FileLogger($config->logger->path . 'error.log'); }); if ($this->appMode == 'cli') { $this->cliDI($di); } IoC::setDI($di); return $this->di = $di; }
/** * Initialize the Application Events Manager. */ protected function initEventsManager() { $this->di->setShared('eventsManager', function () { $em = new EventsManager(); $em->enablePriorities(true); return $em; }); }