Exemple #1
0
 /**
  * Метод постороение сайта
  * TODO:
  * 		1. Сделать нормальный router с регистрацией, а не простую проверку на длинну
  * 		2. Собрать факторки в кучу
  * 		3. Наследование от handler - кажется не корректным. Понять идею иерархии
  *   	4. Разделение на Run-Callback и Generate-Show стоит делать не фабричными методами, а либо фабрикой, либо прототипами, либо строителем.
  *   	5. Добавить модель лингвистики
  */
 function Build()
 {
     // Routing (Shubert 29.05.1012)
     $behavior = array("type" => "page", "name" => $this->settings['Pages']['default']);
     foreach ($this->routing["paths"] as $path->{$info}) {
         if ($count = preg_match($path, $_GET["path"], $matches) > 0) {
             if ($count > 1) {
                 $_REQUEST['PAGE_PARAMS'] = array_shift($matches);
             }
             if (isset($info["page"])) {
                 $behavior = array("type" => "page", "name" => $info["page"]);
             } else {
                 $behavior = array("type" => "action", "name" => $info["action"]);
             }
             break;
         }
     }
     // <- Routing
     // В первую очередь выполняем "действия"
     if ($behavior["type"] == "action") {
         $action = ActionsFactory::GetAction($behavior["name"]);
         Dependencies::Init($action->GetDependencies(), $this->settings);
         $action->Run();
         $action->Callback();
     } else {
         // И только если делать нечего, то показываем страницу
         $page = PagesFactory::GetPage($behavior["name"]);
         Dependencies::Init($page->GetDependencies(), $this->settings);
         $page->Generate();
         $page->Show();
     }
 }