public function testSetServiceCallable() { $bootstrap = new Di(); $callable = function () { return 'foo to the who'; }; $bootstrap->setService('test_service', $callable); $services = $bootstrap->getServices(); $this->assertArrayHasKey('test_service', $services); $this->assertEquals('foo to the who', $services['test_service']); $this->assertEquals('foo to the who', $bootstrap->getService('test_service')); }
/** * Sets up and returns all the objects we'll use * * @return \Pimple\Container */ public function getServices() { $this->container = parent::getServices(); $this->container['db'] = function ($c) { $db = new Db(); $db->setCredentials($this->getDbConfig()); $type = 'mysqli'; if (class_exists('Pdo')) { $type = 'pdo'; } $db->setAccessType($type); return $db; }; $this->container['encrypt'] = function ($c) { $encrypt = new Encrypt(); $new_key = $c['platform']->getEncryptionKey(); $encrypt->setKey($new_key); return $encrypt; }; $this->container['lang'] = function ($c) { $lang = new Language(); if (is_array($this->getLangPath())) { foreach ($this->getLangPath() as $path) { $lang->init($path); } } elseif ($this->getLangPath() != '') { $lang->init($this->getLangPath()); } return $lang; }; $this->container['validate'] = function ($c) { $validate = new Validate(); $validate->setRegex($this->container['regex']); return $validate; }; $this->container['files'] = function ($c) { $file = new Files(); return $file; }; $this->container['errors'] = function ($c) { $errors = new Errors(); $errors->setValidation($c['validate']); return $errors; }; $this->container['license'] = function ($c) { $license = new License(); return $license; }; $this->container['email'] = function ($c) { $email = new Email(); $email->setView($c['view']); $email->setLang($c['lang']); return $email; }; $this->container['view'] = function ($c) { $view = new View(); $helpers = array('file_size' => function ($text) { return $this->container['view_helpers']->m62FileSize($text, false); }, 'lang' => function ($text) { return $this->container['view_helpers']->m62Lang($text); }, 'date_time' => function ($text, $html = true) { return $this->container['view_helpers']->m62DateTime($text, false); }, 'relative_time' => function ($date) { return $this->container['view_helpers']->m62RelativeDateTime($date); }, 'encode' => function ($text) { return $this->container['view_helpers']->m62Encode($text); }, 'decode' => function ($text) { return $this->container['view_helpers']->m62Decode($text); }); $view->addHelper('m62', $helpers); return $view; }; $this->container['regex'] = function ($c) { $regex = new Regex(); return $regex; }; $this->container['shell'] = function ($c) { $shell = new Shell(); return $shell; }; $this->container['console'] = function ($c) { $console = new Console(); $console->setLang($c['lang']); return $console; }; return $this->container; }