Ответы пользователя по тегу PHP
  • Хороший пример реализации роутинга/чпу?

    @tarya
    Я в своей cms сделал достаточно просто и работает как часы.

    Все примерно так:

    При инициализации страницы дергается метод parseBaseURL() в нем вычленяются из $_SERVER[«REQUEST_URI»] базовые переменные. А базовые для движка такие /ru/section/document.html

    То-есть определяется текущий язык, если не указан то по умолчанию берется, потом раздел, и документ если он есть.

    Далее. Вот пример: посетитель зашел по урлу /news/ — это у нас раздел сайта. В нем дергается модуль. Все что будет далее строиться например /news/page-1/, /news/view-1/, /news/download/file.zip или как угодно и что угодно может быть в урле. Как я это все распознаю. Базовый разбор был еще при инициализации, далее как я сказал дергается раздел, а к нему прицеплен модуль. В модуле я могу задать любой шаблон для урла.

    Например:

    $u_goods->addURL("#/cat-(\d+)/?#i", «category»);//add cat
    $u_goods->addURL("#/goods-(\d+)/?#i", «goods»);//add goods
    $u_goods->addURL("#/page-(\d+)/?$#i", «p»);//add pages var

    И все. Уже в классе становятся доступные переменные category, goods, p. И так далее.

    Итого — урл может быть какой угодно, и всегда в модуле для любого угла можно задать свое правило.
    Ответ написан
    Комментировать