Я нашел такой вариант но наверное подключаю не правильно
дает ошибку
Fatal error: Cannot redeclare class uSitemap in /var/www/clients/client1/web28/web/index.php on line 19
укажите что я не так сделал, уверен здесь ошибки новичка каковым я и являюсь
require_once('Main.php');
$object= new Main();
/**
* Sitemap (можно перенести в отдельный файл)
*/
$GLOBALS['sitemap'] = array (
'_404' => 'page404.php', // Страница 404</span>
'/' => 'index.php', // Главная страница
'/users' => 'Users.php', // Новости - страница без параметров
'/stories(/[0-9]+)?' => 'storypage.php', // С числовым параметром
// Больше правил
);
// Код роутера
class uSitemap {
public $title = '';
public $params = null;
public $classname = '';
public $data = null;
public $request_uri = '';
public $url_info = array();
public $found = false;
function __construct() {
$this->mapClassName();
}
function mapClassName() {
$this->classname = '';
$this->title = '';
$this->params = null;
$map = &$GLOBALS['sitemap'];
$this->request_uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$this->url_info = parse_url($this->request_uri);
$uri = urldecode($this->url_info['path']);
$data = false;
foreach ($map as $term => $dd) {
$match = array();
$i = preg_match('@^'.$term.'$@Uu', $uri, $match);
if ($i > 0) {
// Get class name and main title part
$m = explode(',', $dd);
$data = array(
'classname' => isset($m[0])?strtolower(trim($m[0])):'',
'title' => isset($m[1])?trim($m[1]):'',
'params' => $match,
);
break;
}
}
if ($data === false) {
// 404
if (isset($map['_404'])) {
// Default 404 page
$dd = $map['_404'];
$m = explode(',', $dd);
$this->classname = strtolower(trim($m[0]));
$this->title = trim($m[1]);
$this->params = array();
}
$this->found = false;
} else {
// Found!
$this->classname = $data['classname'];
$this->title = $data['title'];
$this->params = $data['params'];
$this->found = true;
}
return $this->classname;
}
}
$sm = new uSitemap();
$routed_file = $sm->classname; // Получаем имя файла для подключения через require()
require($routed_file); // Подключаем файл
// P.S. Внутри подключённого файла Вы можете использовать параметры запроса,
// которые хранятся в свойстве $sm->params
function index(){
$object->view('preheader_view');
$object->view('login_view');
$object->view('footer_view');
}