Exemple #1
0
 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
 }
Exemple #2
0
 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
 }