/** * Метод постороение сайта * 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(); } }