예제 #1
0
파일: Di.php 프로젝트: tmquang6805/phalex
 /**
  * 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;
 }
예제 #2
0
 /**
  *
  * @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);
 }
예제 #3
0
 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');
 }
예제 #4
0
 /**
  * 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);
 }
예제 #5
0
파일: Bootstrap.php 프로젝트: huoybb/forum
 /**
  * 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);
 }
예제 #6
0
 /**
  * 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();
 }
예제 #7
0
 /**
  * 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;
 }
예제 #8
0
파일: Bootstrap.php 프로젝트: phalcon/forum
 /**
  * Initialize the Application Events Manager.
  */
 protected function initEventsManager()
 {
     $this->di->setShared('eventsManager', function () {
         $em = new EventsManager();
         $em->enablePriorities(true);
         return $em;
     });
 }