private function getOptions() { $this->ensure(file_exists($this->config), "Could not find options file"); $options = SimpleXml_load_file($this->config); print get_class($options); $dsn = (string) $options->dsn; $this->ensure($dsn, "No DSN found"); \woo\base\ApplicationRegistry::setDSN($dsn); // set other values }
private function getOptions() { $this->ensure(file_exists($this->config), "Could not find options file"); $options = @SimpleXml_load_file($this->config); // $this->ensure( $options instanceof SimpleXMLElement, // "Could not resolve options file" ); $dsn = (string) $options->dsn; $this->ensure($dsn, "No DSN found"); \woo\base\ApplicationRegistry::setDSN($dsn); $map = new ControllerMap(); foreach ($options->control->view as $default_view) { $stat_str = trim($default_view['status']); $status = \woo\command\Command::statuses($stat_str); $map->addView('default', $status, (string) $default_view); } foreach ($options->control->command as $command_view) { $command = trim((string) $command_view['name']); if ($command_view->classalias) { $classroot = trim((string) $command_view->classalias['name']); $map->addClassroot($command, $classroot); } if ($command_view->view) { $view = trim((string) $command_view->view); $forward = trim((string) $command_view->forward); $map->addView($command, 0, $view); if ($forward) { $map->addForward($command, 0, $forward); } foreach ($command_view->status as $command_view_status) { $view = trim((string) $command_view_status->view); $forward = trim((string) $command_view_status->forward); $stat_str = trim($command_view_status['value']); $status = \woo\command\Command::statuses($stat_str); if ($view) { $map->addView($command, $status, $view); } if ($forward) { $map->addForward($command, $status, $forward); } } } } \woo\base\ApplicationRegistry::setControllerMap($map); }
/** * Считываем глобальные настройки и таблицу маршрутизации из config.xml, * полученные данные помещаем в реестр FrameworkRegistry. * * Note: Таблица маршрутизации сохраняется в экземпляре RouteMap, который * в свою очередь сохраняется в FrameworkRegistry. */ private function getSettingsFromConfigFile() { $nameCfgFile = 'config.xml'; $cfgPathFile = '..' . DIRECTORY_SEPARATOR . 'framework' . DIRECTORY_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . $nameCfgFile; if (!file_exists($cfgPathFile)) { throw new FrmworkExcep\FileNotFoundException('Конфиг. файлa "' . $nameCfgFile . '" нет.', RouteMapLoader::class, __METHOD__); } $settings = @SimpleXml_load_file($cfgPathFile); $host = (string) $settings->host; FrameworkRegistry::setHost($host); // сохраняем наименование хоста $baseUrl = (string) $settings->baseUrl; FrameworkRegistry::setBaseUrl($baseUrl); // сохраняем путь к index.php $connDB = (string) $settings->connDB; FrameworkRegistry::setConnStringDB($connDB); // сохраняем путь к БД $msgForException = 'Ошибка в "' . $nameCfgFile . '".'; if (!$host || !$baseUrl) { throw new FrmworkExcep\FileFormatException($msgForException, RouteMapLoader::class, __METHOD__, 'Проверьте теги: host, baseUrl.'); } FrameworkRegistry::setStartRoute((string) $settings->startRoute); // сохраняем маршрут к стартовой странице приложения FrameworkRegistry::setExcepPage((string) $settings->excepPage); // сохраняем путь к странице с описанием возникших исключений $routing = new Routing(new RouteMapManager()); //@var Routing агрегирует экземпляр RouteMap, в который сохраняем маршруты $strStatusVal = ''; //@var string результат выполнения действия ('RES_ACT_DEF', 'RES_ACT_OK'...). if (!$settings->default) { throw new FrmworkExcep\FileFormatException($msgForException, RouteMapLoader::class, __METHOD__, 'Проверьте тег default.'); } // считываем и сохраняем данные о default-странице фраймворка: foreach ($settings->default as $eachDef) { if (!$eachDef->action) { throw new FrmworkExcep\FileFormatException($msgForException, RouteMapLoader::class, __METHOD__, 'Проверьте тег default\\action.'); } $routing->addActionNameToRoute('default', (string) $eachDef->action); if (!$eachDef->view) { throw new FrmworkExcep\FileFormatException($msgForException, RouteMapLoader::class, __METHOD__, 'Проверьте тег default\\view.'); } $routing->addViewToRoute('default', 0, (string) $eachDef->view); } if (!$settings->route) { throw new FrmworkExcep\FileFormatException($msgForException, RouteMapLoader::class, __METHOD__, 'Проверьте теги route.'); } // считываем и сохраняем данные о маршрутах (route): foreach ($settings->route as $eachRoute) { if (!$eachRoute['name']) { throw new FrmworkExcep\FileFormatException($msgForException, RouteMapLoader::class, __METHOD__, 'Проверьте атрибут name тегa route.'); } $nameRoute = (string) $eachRoute['name']; //@var string наименование маршрута. if (!$eachRoute->controller) { throw new FrmworkExcep\FileFormatException($msgForException, RouteMapLoader::class, __METHOD__, 'Проверьте тег controller.'); } if (!$eachRoute->controller['name']) { throw new FrmworkExcep\FileFormatException($msgForException, RouteMapLoader::class, __METHOD__, 'Проверьте атрибут name тегa controller.'); } $nameController = (string) $eachRoute->controller['name']; //@var string наименование контроллера. if (!$eachRoute->action) { throw new FrmworkExcep\FileFormatException($msgForException, RouteMapLoader::class, __METHOD__, 'Проверьте тег action.'); } if (!$eachRoute->action['name']) { throw new FrmworkExcep\FileFormatException($msgForException, RouteMapLoader::class, __METHOD__, 'Проверьте атрибут name тегa action.'); } $nameAction = (string) $eachRoute->action['name']; //@var string наименование действия. foreach ($eachRoute->action->param as $eachParam) { $routing->addParamToAction($nameRoute, (string) $eachParam, trim($eachParam['limitationrule']), trim($eachParam['defaultvalue'])); // сохранение в ControllerMap параметров действия. } $routing->addControllerNameToRoute($nameRoute, $nameController); $routing->addActionNameToRoute($nameRoute, $nameAction); if ($eachRoute->view) { $strStatusVal = ''; // считываем и сохраняем данные о представлениях и соотв. им результатах выполнения действий контролера: foreach ($eachRoute->view as $eachView) { $nameView = (string) $eachView; //@var string наименование представления. $strStatusVal = trim($eachView['status']); $routing->addViewToRoute($nameRoute, ControllerBase::statuses($strStatusVal), $nameView); // сохраняем текущий маршрут, результат выполения действия и соотв. представление } } $strStatusVal = ''; if ($eachRoute->status) { $strStatusVal = trim($eachRoute->status['value']); foreach ($eachRoute->status->redirect as $eachRedirect) { // считываем и сохраняем данные о форвард-маршруте, который будет вызван // из текущего маршрута, в случае установки соотв. статуса в действии контролера: $routing->addRedirectToRoute($nameRoute, ControllerBase::statuses($strStatusVal), (string) $eachRedirect); } } } //foreach ( $settings->cmd as $eachController ) { FrameworkRegistry::setRouteMap($routing->getRouteMapManager()); // сохраняем таблицу маршрутизации в реестре FrameworkRegistry }