Я хочу добавить динамическую маршрутизацию REST-esque в приложение PHP. Я бы хотел использовать существующую библиотеку маршрутизации, поэтому мне не нужно изобретать колесо.
Однако, когда я смотрю на такие вещи, как Slim и F3, все они приходят с вещами, которые я не хочу – например, с шаблонами и MVC. Поскольку я просто хочу маршрутизации, у меня получилось бы много кода рамки в моем приложении, которое мне не нужно.
Есть ли хорошая библиотека, которая только делает маршрутизацию? Или я застрял в импорте полной каркаса или изобретательности колеса?
Попробуйте Klein :
Отдельный файл, автономный и надежный:
«klein.php – это молниеносный маршрутизатор для PHP 5.3+»
Из-за старых ответов на этот вопрос, я думаю, было бы неплохо остановиться на некоторых более современных решениях дела в OP.
2 решения, которые пришли мне на ум, как только я увидел ваш вопрос:
Phroute построен поверх FastRoute, поэтому они оба требуют PHP 5.4.
Если вам нужно решение PHP 5.3+, я бы определенно рекомендовал маршрутизацию Slim Framework. Если вам не нужны какие-либо другие функции, которые входят в структуру, вы можете извлечь детали маршрутизации и использовать только их (SLIM – лицензия MIT, поэтому вам разрешено делать что угодно)
Ive использовал тонкую маршрутизацию автономно, в моем проекте – DaGhostman \ CodeWave @ github, см. Теги <= 2.4, относительные части находятся в Application\Core & Application\Controller .
Fastroute – это автономная библиотека маршрутизации. Он основан на модели ООП и имеет полную структуру тестирования. Открытый исходный код и лицензия бесплатны. Если вы ищете что-то для своих проектов, это хорошее место для начала.
Попробуйте отправить: https://github.com/noodlehaus/dispatch
require 'dispatch.php'; get('/', function () { echo "Hello world!\n"; }); dispatch();
Это однофакторная инфраструктура маршрутизации для PHP. Очень легкий, очень прост в работе. Этот и Слим – мои любимые.
Я вообще не нуждаюсь в полномасштабной структуре. Если вам нужна ORM, попробуйте Redbean.
Если вам нужен движок шаблона, используйте Twig.
При таком подходе вы просто устанавливаете то, что используете.
Проверьте Pux ( https://github.com/c9s/Pux ), который нацелен на чрезвычайно высокую производительность, нулевую зависимость, нулевые служебные данные (с поддержкой расширения C). обеспечивая при этом хорошую производительность, Pux также предоставляет API-интерфейс Sinatra для определения ваших собственных маршрутов маршрутизации:
$ mux = new Pux \ Mux;
$ mux-> any ('/ product', ['ProductController', 'listAction']);
$ mux-> get ('/ product /: id', ['ProductController', 'itemAction'], [
'require' => ['id' => '\ d +',],
'default' => ['id' => '1',]
]);
$ mux-> post ('/ product /: id', ['ProductController', 'updateAction'], [
'require' => ['id' => '\ d +',],
'default' => ['id' => '1',]
]);
$ mux-> delete ('/ product /: id', ['ProductController', 'deleteAction'], [
'require' => ['id' => '\ d +',],
'default' => ['id' => '1',]
]);
$ route = $ mux-> отправка ('/ product / 1');
Результат теста:
п = 10000
Выполнение php-массива. 138796.45654569 / с
Управление пуком. 124982.98519026 / с
Бегущий Клейн -. 1801.5070399717 / с
Бегущая ветчина. 13566.734991391 / с
Руническая аура -. 39657.986477172 / с
Выполнение symfony / routing -. 1934.2415677861 / с
Оценить Mem php array pux aura ham symfony / routing klein
php array 138.8K / s 0B --- 90% -28% -9% -1% -1%
pux 124,98K / s 0B 111% - -31% -10% -1% -1%
аура 39,66K / с 0B 349% 315% --- 34% -4% -4%
ветчина 13.57K / s 0B 1023% 921% 292% - -14% -13%
symfony / routing 1.93K / s 786K 7175% 6461% 2050% 701% - -93%
klein 1,8K / s 262K 7704% 6937% 2201% 753% 107% -
================================================================================================================================================================================================================= ====================
php array 138.8K / s | ██████████████████████████████████████████████████ ██████████ |
pux 124.98K / s | ██████████████████████████████████████████████████ ████ |
аура 39.66K / s | █████████████████ |
ветчина 13.57K / s | █████ |
symfony / routing 1.93K / s | |
klein 1.8K / s | |
======================== Информация о системе ================== ============
Версия PHP: 5.5.6
Марка процессора: Intel (R) Core (TM) i5-3427U CPU @ 1.80GHz
С расширением XDebug.
Pux пытается не использовать время вычислений для динамического построения всех маршрутов (например, Symfony / Routing). Вместо этого Pux компилирует ваши маршруты в простой массив PHP для кэширования, скомпилированные маршруты могут быть загружены из кеша очень быстро.
С поддержкой Pux PHP Extension вы можете загружать и отправлять маршруты в 1,5-2 раза быстрее, чем чистый PHP Pux.
PHP – очень простой маршрутизатор – это действительно хорошо и просто.
PHP – RegexRouter еще лучше на мой взгляд 🙂
Взгляните на класс Router литиевого фреймворка , так как для интенсивного использования инъекций зависимостей вы можете настроить класс Router, вызвав config()