paw34rus/path-finder

Simple and fast routing

dev-master 2014-05-17 17:50 UTC

This package is not auto-updated.

Last update: 2025-06-17 10:30:31 UTC


README

Быстрый и охуенный роутинг для вашего сайта!

  • Легко встраивается в любое приложение. Возможна как built-in конфигурация, так и создание адаптера
  • Простой и лаконичный синтакис, ни одного лишнего символа
  • Информативные сообщения об ошибках при разборе файла конфигурации
  • Подсветка синтаксиса конфига в phpstorm и других IDE
  • Максимум DRY: шаблоны регулярных выражений для параметров, привязка нескольких URL к одному контроллеру и т.д.

Установка

Через composer

Добавьте зависимость в ваш composer.json:

"require": {
	...
	"paw34rus/path-finder": "dev-master"	
}

Простое копирование в папку с классами

PathFinder следует стандарту PSR-0, который поддерживает большинство автозагрузчиков.

##Использование

Примеры built-in конфигурации и простого адаптера находятся в папке /examples

##Пример конфига

@category,htmlpage   [A-Za-zА-Яа-яЁё0-9_\.]+          #название категории или страницы
@page                [0-9]+                           #числовой идентификатор
@date                [0-9]{4}\-[0-9]{1,2}\-[0-9]{1,2} #дата в формате 2012-12-12
  
[Catalog] # т.к. тут не указан action, он по умолчанию будет index
ANY /
ANY /{page}
ANY /{date}/{page}
ANY /{category}/{page}
ANY /{date}/{category}/{page}
  
[Pages]
GET /{htmlpage}.html
  
[Users:regform]
GET /register   {name: "Vladimir Makarov", status: "KIA"}  # какие-то дополнительные параметры
  
[Users:register]
POST /register

##Пример генерации URL

$url = $router->makeUrl('catalog', [
	'page' => 42, 
	'category' => 'news'
]); // "/news/42"

##Пример разбора URL

$rules = $router->parseUrl('/news/42', 'GET'); // объект с контроллером, действием и т.д. или NoRouteException