Может ли кто-нибудь сказать мне, как создать php-класс для действия навигации, я бы хотел написать url, как это в браузере
предположим, что если мне нужна домашняя страница, тогда
http://myserver.mydomain.com/index/home, тогда действие будет домашней функцией index.php.
Я знаю, что могу достичь этого, используя $_POST
и $_GET
, но я хочу попробовать что-то вроде того, как работает кодигнитер, пока я так пробовал
<?php class Index { function __construct() { parent::__construct(); } function home(){ include('test/header.php'); include('test/home.php'); include('test/footer.php'); } function about(){ include('test/header.php'); include('test/about.php'); include('test/footer.php'); } } ?>
в<?php class Index { function __construct() { parent::__construct(); } function home(){ include('test/header.php'); include('test/home.php'); include('test/footer.php'); } function about(){ include('test/header.php'); include('test/about.php'); include('test/footer.php'); } } ?>
в<?php class Index { function __construct() { parent::__construct(); } function home(){ include('test/header.php'); include('test/home.php'); include('test/footer.php'); } function about(){ include('test/header.php'); include('test/about.php'); include('test/footer.php'); } } ?>
в<?php class Index { function __construct() { parent::__construct(); } function home(){ include('test/header.php'); include('test/home.php'); include('test/footer.php'); } function about(){ include('test/header.php'); include('test/about.php'); include('test/footer.php'); } } ?>
в<?php class Index { function __construct() { parent::__construct(); } function home(){ include('test/header.php'); include('test/home.php'); include('test/footer.php'); } function about(){ include('test/header.php'); include('test/about.php'); include('test/footer.php'); } } ?>
в<?php class Index { function __construct() { parent::__construct(); } function home(){ include('test/header.php'); include('test/home.php'); include('test/footer.php'); } function about(){ include('test/header.php'); include('test/about.php'); include('test/footer.php'); } } ?>
в<?php class Index { function __construct() { parent::__construct(); } function home(){ include('test/header.php'); include('test/home.php'); include('test/footer.php'); } function about(){ include('test/header.php'); include('test/about.php'); include('test/footer.php'); } } ?>
Предположим, что мы имеем следующее правило перезаписи;
RewriteEngine On RewriteRule ^([^/]*)$ /index.php?module=$1 [L,QSA]
Это будет переписывать запрос типа; http://example.php/index.php?module=about
to http://example.php/about
Теперь давайте посмотрим, как делается Маршрутизатор;
<?php class Router { private $strModule; //Holds the module to load (the page) public function __construct(){} public function setModule($strModuleName) { $this->strModule = $strModuleName; } public function loadModule() { if( file_exists('modules/'. $this->strModule .'.php') ) { include 'modules/'. $this->strModule .'.php'; } else { 'modules/404.php'; } } }
Теперь давайте использовать маршрутизатор в index.php
$objRouter = new Router(); $objRouter->setModule($_GET['module']); $objRouter->loadModule();
И наше дерево будет похоже;
- index.php - modules/ - about.php - 404.php
Конечно, это просто быстрая работа, и ее можно улучшить.
Надеюсь, это поможет.
Примечание . Симпатичные URL-адреса (.htaccess переписывают правила) предназначены только для глазных конфет. Вы можете добиться этого, не используя правила перезаписи, даже с тем же кодом, который указан выше