/** * Resolves the service based on its configuration * * @param string $name * @param array $parameters * @throws RuntimeException * @return mixed */ public static function get($name, $parameters = null) { if (self::$di == null) { throw new RuntimeException('IoC container is null!'); } return self::$di->get($name, $parameters); }
public function testRegister() { $this->testable->register(); /* @var Router $router */ $router = $this->di->get('router'); $this->assertInstanceOf('Phalcon\\Mvc\\Router', $router); $this->assertEquals('bar', $router->getDefaultNamespace()); $this->assertEquals('foo', $router->getDefaultModule()); $this->assertNotEmpty($router->getRoutes()); $this->assertTrue(is_array($router->getRoutes())); $this->assertCount(8, $router->getRoutes()); }
public function attachCache($cacheService) { static $mode, $collector, $hasAttachd = array(); if (in_array($cacheService, $hasAttachd)) { return; } $hasAttachd[] = $cacheService; if (!$this->shouldCollect('cache', false)) { return; } if (!is_string($cacheService)) { throw new \Exception('The parameter must be a cache service name.'); } if (!$mode) { $mode = $this->config->options->cache->get('mode', 0); } if (!$collector) { $mc = null; if ($this->hasCollector('messages')) { $mc = $this->getCollector('messages'); } $collector = new CacheCollector($mode, $mc); $this->addCollector($collector); } $backend = $this->di->get($cacheService); if ($backend instanceof Multiple || $backend instanceof Backend) { if ($this->shouldCollect('cache', false)) { $this->di->remove($cacheService); $self = $this; $this->di->set($cacheService, function () use($self, $backend, $collector) { return $self->createProxy(clone $backend, $collector); }); } } }
/** * Prepare controller. * * @param string|null $action Action name. * * @return void */ public function prepare($action = null) { $this->di = DI::getDefault(); $this->dispatcher = $this->di->get('dispatcher'); $this->cacheData = $this->di->get('cacheData'); if ($this->_widgetName !== null) { if ($this->_widgetModule !== null) { /** @var \Phalcon\Mvc\View $view */ $this->view = $view = $this->di->get('view'); $view->disableLevel(View::LEVEL_LAYOUT); $view->disableLevel(View::LEVEL_MAIN_LAYOUT); if ($action) { $view->pick('../../' . $this->_widgetModule . '/Widget/' . $this->_widgetName . '/' . $action); } } else { /** @var \Phalcon\Mvc\View $view */ $this->view = $view = $this->di->get('view'); $view->disableLevel(View::LEVEL_LAYOUT); $view->disableLevel(View::LEVEL_MAIN_LAYOUT); $view->setVars([], false); if ($action) { $relativePath = Utilities::getRelativePath($view->getViewsDir(), $this->di->get('registry')->directories->widgets); $view->pick($relativePath . $this->_widgetName . '/' . $action); } } } // run init function if (method_exists($this, 'initialize')) { $this->initialize(); } }
/** * 数据库操作异常 * @param \Phalcon\Mvc\Model $model * @return bool */ public function databaseErrorLog($model) { $this->errorLog(ResultStatus::DATABASE_ERROR, '数据库异常.'); $error = ''; foreach ($model->getMessages() as $msg) { $error .= $msg . ','; } $this->di->get('logger')->error('数据库异常, parameters:' . json_encode($this->parameters) . ', error: ' . $error); return false; }
/** * @covers ULogin\Auth::hasSession() */ public function testSession() { // check return $session = $this->invokeMethod($this->auth, 'hasSession', array()); $this->assertTrue($session, "[-] Session does not configured in DI"); //@todo check user data $sessionContainer = $this->di->get('session'); $sessionContainer->set(Auth::KEY, array(1, 2, 3)); // check while service destroyed $this->di->offsetUnset('session'); $session = $this->invokeMethod($this->auth, 'hasSession', array()); $this->assertFalse($session, "[-] Session must be destroyed"); }
public function __construct(DI $di, $aggregate = true, $formatter = 'line') { $this->_di = $di; $this->_debugbar = $this->_di['debugbar']; $this->_formatter = strtolower($formatter); if ($di->has('log') && ($log = $di->get('log'))) { $debugbar_loger = new Debugbar($di['debugbar']); if ($log instanceof Adapter) { $di->remove('log'); $multiple = new Multiple(); $multiple->push(clone $log); $multiple->push($debugbar_loger); /** @var DI\Service $service */ $di->set('log', $multiple); } elseif ($log instanceof Multiple) { $log->push($debugbar_loger); } $this->_aggregate = $this->isAggregate($aggregate); } }
public function testRegisterView() { $view = \Mockery::mock('mirolabs\\phalcon\\Framework\\View\\View')->shouldDeferMissing()->makePartial(); $dependencyInjection = new DI(); $modulePath = 'projectPath/modules'; $moduleName = 'test'; $config = new Map(); $config->set('view', json_encode(['compiledPath' => 'compiledPath', 'compiledSeparator' => 'compiledSeparator', 'compiledExtension' => '.compile', 'compileAlways' => true, 'stat' => 'stat'])); $config->set('projectPath', '"projectPath"'); $config->set('environment', '"dev"'); $config->set('ng.app.name', '"ngtest"'); $dependencyInjection->set('config', $config); $view->shouldReceive('setViewsDir')->with($modulePath . '/views/')->once(); $view->shouldReceive('registerEngines')->once(); $view->shouldReceive('setRenderLevel')->with(View::LEVEL_ACTION_VIEW)->once(); $view->shouldReceive('setVar')->with('ngAppName', 'ngtest')->once(); $view->shouldReceive('setDI'); $registerView = new RegisterView($view, $dependencyInjection); $registerView->register($moduleName, $modulePath); $view->mockery_verify(); $this->assertEquals($view, $dependencyInjection->get('view')); }
/** * @depends testProfilerManagerAttachesDataCollectorsToVariousEvents */ public function testProfilersMustBeExecutedBeforeSerialization() { $profiler = $this->di->get(ProfilerDataCollector::DI_NAME); $eventsManager = $this->di->getShared('eventsManager'); $profiler->enable($this->getDataCollectors()); try { json_encode($profiler); $this->fail(); } catch (\Exception $e) { do { $e = $e->getPrevious(); } while ($e && $e->getPrevious()); $this->assertInstanceOf('\\Vegas\\Profiler\\Exception\\EventNotTriggeredException', $e); } $eventsManager->fire('db:beforeQuery', $this->di->getShared('db')); $this->di->getShared('db')->execute('SELECT 1'); $eventsManager->fire('db:afterQuery', $this->di->getShared('db')); $eventsManager->fire('dispatch:beforeException', $this->di->getShared('dispatcher'), new \Vegas\Exception()); $eventsManager->fire('dispatch:afterDispatchLoop', $this->di->getShared('dispatcher')); $eventsManager->fire('view:afterRender', $this->di->getShared('view')); $result = json_encode($profiler); $this->assertJson($result); }
/** * Prepare controller. * * @param string|null $action Action name. * * @return void */ public function prepare($action = self::DEFAULT_ACTION) { $this->di = DI::getDefault(); $this->dispatcher = $this->di->get('dispatcher'); $this->cacheData = $this->di->get('cacheData'); if ($this->_widgetName !== null) { /** @var \Engine\View $view */ $this->view = $view = $this->di->get('view'); $view->reset()->restoreViewDir()->setVars([], false)->disableLevel(View::LEVEL_LAYOUT)->disableLevel(View::LEVEL_MAIN_LAYOUT); $viewPath = null; if ($this->_widgetModule !== null) { // Widget from module. $viewPath = $this->_widgetModule . '/Widget/' . $this->_widgetName . '/' . $action; } else { // External widget. $viewPath = '../widgets/' . $this->_widgetName . '/' . $action; } $view->pick($viewPath); } // run init function if (method_exists($this, 'initialize')) { $this->initialize(); } }
/** * Init engine. * * @param DI $di Dependency Injection. * * @return void */ protected function _initEngine($di) { foreach ($di->get('registry')->modules as $module) { // Initialize module api. $di->setShared(strtolower($module), function () use($module, $di) { return new ApiInjector($module, $di); }); } $di->setShared('transactions', function () { return new TxManager(); }); $di->setShared('assets', new AssetsManager($di)); $di->setShared('widgets', new Catalog()); }
/** * */ public function setUp() { $this->di = DI::getDefault(); $bootstrap = new Bootstrap($this->di->get('config')); $this->bootstrap = $bootstrap; }
/** * @param DI $container */ public function __construct(DI $container) { $this->container = $container; $this->config = $container->get('config'); }
/** * Init router. * * @param DI $di Dependency Injection. * @param Config $config Config object. * * @return Router */ protected function _initRouter($di, $config) { $cacheData = $di->get('cacheData'); $router = $cacheData->get(EnSystem::CACHE_KEY_ROUTER_DATA); if ($router == null) { $saveToCache = $router === null; // Load all controllers of all modules for routing system. $modules = $di->get('registry')->modules; // Use the annotations router. $router = new PhRouterAnnotations(false); $router->setDefaultModule(Application::SYSTEM_DEFAULT_MODULE); $router->setDefaultNamespace(ucfirst(Application::SYSTEM_DEFAULT_MODULE) . '\\Controller'); $router->setDefaultController('Index'); $router->setDefaultAction('index'); /** * Load all route from router file */ foreach ($modules as $module) { $moduleName = ucfirst($module); // Get all file names. $moduleDir = opendir($di->get('registry')->directories->modules . $moduleName . '/Controller'); while ($file = readdir($moduleDir)) { if ($file == "." || $file == ".." || strpos($file, 'Controller.php') === false) { continue; } $controller = $moduleName . '\\Controller\\' . str_replace('Controller.php', '', $file); $router->addModuleResource(strtolower($module), $controller); } closedir($moduleDir); } if ($saveToCache) { $cacheData->save(EnSystem::CACHE_KEY_ROUTER_DATA, $router, 2592000); // 30 days cache } } $router->removeExtraSlashes(true); $di->set('router', $router); return $router; }
/** * Init loader. * * @param DI $di Dependency Injection. * @param Config $config Config object. * @param EventsManager $eventsManager Event manager. * * @return Loader */ protected function _initLoader($di, $config, $eventsManager) { // Add all required namespaces and modules. $registry = $di->get('registry'); $namespaces = []; $namespaces['Controllers'] = $registry->directories->modules . '/controller/'; $namespaces['Models'] = $registry->directories->modules . '/models/'; $namespaces['Cli'] = $registry->directories->library . '/cli/'; $namespaces['Engine'] = $registry->directories->engine; $dirs['libraryDir'] = $registry->directories->library; $dirs['engineDir'] = $registry->directories->engine; $dirs['modulesDir'] = $registry->directories->modules; $loader = new Loader(); $loader->registerDirs($dirs); $loader->registerNamespaces($namespaces); $loader->register(); $di->set('loader', $loader); return $loader; }
/** * Prepare widgets metadata for Engine. * * @param DI $di Dependency injection. * * @return void */ protected function _initWidgets(DI $di) { if ($di->get('app')->isConsole()) { return; } $cache = $di->get('cacheData'); $widgets = $cache->get(System::CACHE_KEY_WIDGETS_METADATA); if ($widgets === null) { $widgets = []; foreach (Widget::find() as $object) { $widgets[] = [$object->id, $object->getKey(), $object]; } $cache->save(System::CACHE_KEY_WIDGETS_METADATA, $widgets, 0); // Unlimited. } $di->get('widgets')->addWidgets($widgets); }
/** * @return Map */ protected function getConfig() { return $this->dependencyInjection->get('config'); }