Я хочу добавить динамическую маршрутизацию 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()