/** * Calls vidget and return its rendered output * @param $vidgetName string name of the vidget to load * @return string */ private function getVidgetContent($vidgetName, array $appData) { $className = VIDGET_NAMESPACE . '\\' . $vidgetName; $vidgetTemplateName = $this->vidgetViews[$vidgetName]; $prefix = \Utility\DependencyInjectionStorage::getInstance()->getPrefix(); return (new $className())->{$prefix . 'render'}($appData, $vidgetTemplateName); }
public function testSuccessfulCall() { $obj = new \Helpers\DummyMagic(); \Utility\DependencyInjectionStorage::getInstance()->setPrefix('DI_'); \Utility\DependencyInjectionStorage::getInstance()->addInstance($obj); $dateObj = (new \DateTime())->setDate(2015, 1, 1)->setTime(10, 01); \Utility\DependencyInjectionStorage::getInstance()->addInstance($dateObj); \Utility\DependencyInjectionStorage::getInstance()->addInstance(new \Helpers\ObjVarsTest()); $this->assertEquals($dateObj, $obj->DI_foo(array(1))); }
public function testDumy() { $m = new DummyMagic(); $m->foo(array(1), new \DateTime()); $inject1 = new \DBMappers\AppointmentItem(); DependencyInjectionStorage::getInstance()->addInstance($inject1); $inject2 = (new \DateTime())->setDate(2010, 1, 1); DependencyInjectionStorage::getInstance()->addInstance($inject2); $inject3 = (new \DateTime())->setDate(2013, 1, 1); DependencyInjectionStorage::getInstance()->addInstance($inject3); $inject4 = new \DBMappers\EmpItem(); DependencyInjectionStorage::getInstance()->addInstance($inject4); DependencyInjectionStorage::getInstance()->setPrefix('DII_'); $m->DII_foo(array(2)); $m->DII_bar(); $m->DII_baz(); print_r(DependencyInjectionStorage::getInstance()->getRegisteredInstance(get_class($inject1))); }
error_reporting(E_ALL); date_default_timezone_set('Europe/Kiev'); // change if needed require_once "include/constants.php"; require_once "include/autoload.php"; // state templates: [state] => [template file name] $templateMap = array(\Core\Application::STATE_LOGIN => "LoginTemplate.html", \Core\Application::STATE_BROWSE => "BrowseTemplate.php", \Core\Application::STATE_EMPLOYEE => "EmployeeTemplate.php", \Core\Application::STATE_EMPLOYEE_LIST => "EmployeeListTemplate.php", \Core\Application::STATE_BOOK => "BookTemplate.php", \Core\Application::STATE_DETAILS => "DetailsTemplate.php", \Core\Application::STATE_DETAILS_RETURN => "DetailsReturnTemplate.html", \Core\Application::STATE_REDIRECT => null); // vidget templates: [vidget class name (like in data-vidgets attribute)] => [template file name] $vidgetViews = array('LoginForm' => 'LoginForm.php', 'Navigation' => 'Navigation.php', 'Informer' => 'Informer.php', 'Messages' => 'Messages.php', 'Calendar' => 'Calendar.php', 'SideMenu' => 'SideMenu.php', 'Error' => 'Error.php', 'EmpListMessage' => 'EmpListMessage.php', 'Employee' => 'Employee.php', 'EmployeeList' => 'EmployeeList.php', 'PeriodNavigator' => 'PeriodNavigator.php', 'Book' => 'Book.php', 'DetailsCaption' => 'DetailsCaption.php', 'Details' => 'Details.php'); $registry = new \Core\Registry(); $registry->set(REG_SITE_ROOT, 'http://' . $_SERVER['HTTP_HOST'] . pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_DIRNAME)); \Utility\DependencyInjectionStorage::getInstance()->setPrefix(DI_PREFIX); \Utility\DependencyInjectionStorage::getInstance()->addInstance($registry); $http = new \Core\Http(); \Utility\DependencyInjectionStorage::getInstance()->addInstance($http); $session = new \Core\Session(); \Utility\DependencyInjectionStorage::getInstance()->addInstance($session); $app = new Core\Application($registry->get(REG_SITE_ROOT), $session); \Utility\DependencyInjectionStorage::getInstance()->addInstance($app); $db = new \Core\Database('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=utf8', DB_USER, DB_PASSWORD, 'appointments', '\\Utility\\DatabaseCreateScript'); \Utility\DependencyInjectionStorage::getInstance()->addInstance($db); \Utility\DependencyInjectionStorage::getInstance()->addInstance(new \DBMappers\RoomItem('rooms')); \Utility\DependencyInjectionStorage::getInstance()->addInstance(new \DBMappers\AppointmentItem('appointments')); $empMapper = new \DBMappers\EmpItem('employees'); \Utility\DependencyInjectionStorage::getInstance()->addInstance($empMapper); (new \Core\Router())->start($http, $app, $db, $empMapper); if ($app->getState() == \Core\Application::STATE_REDIRECT) { $http->redirect($app->getRedirectUrl(), $registry->get(REG_SITE_ROOT)); } else { $http->setResponseBody((new \Core\View($vidgetViews))->renderState($app->getState(), $app->getAppData(), $templateMap, $registry->get(REG_SITE_ROOT))); }
public function start(Http $http, Application $app, Database $db, \DBMappers\EmpItem $empMapper) { $this->parsePath($http); $this->checkAuth($app, $db, $empMapper); if ($this->needSetPassword($app, $db, $empMapper)) { return; } $controllerClassName = CONTROLLER_NAMESPACE . "\\" . $this->controllerName; try { if (!class_exists($controllerClassName)) { $controllerClassName = CONTROLLER_NAMESPACE . "\\" . DEFAULT_CONTROLLER; } } catch (\Exception $e) { $controllerClassName = CONTROLLER_NAMESPACE . "\\" . DEFAULT_CONTROLLER; } $classInstance = new $controllerClassName(); if (!method_exists($classInstance, $this->actionName)) { $this->actionName = DEFAULT_ACTION; } //error_log("\nmethod" . print_r($this->actionName, true), 3, 'my_errors.txt'); $di_prefix = \Utility\DependencyInjectionStorage::getInstance()->getPrefix(); call_user_func(array($classInstance, $di_prefix . $this->actionName), $this->urlParameters, $http); }