Если ты переопределяешь любой из компонентов используемых в диспатчере, твой PHP код будет работать медленнее, чем оптимизированный Си код (он экспортирует в PHP только результат работы). Как минимум на лишний десяток routes которые можно просто добавить.
Без сомнения. Но если нужный функционал не работает - приходится идти на подобные издержки.
Чисто субъективно, bottleneck из за лишних routes в пункте 2 - это смешно, следом идет самый громоздкий этап работы - бизнесс-логика (если это не Hello World!). В общей картине, проблема не такая уж и большая, правда?
В приложении, которое надо сделать и забыть (читай - во время тестов) - вообще не проблема. В приложении, которое придется поддерживать и, возможно, рефакторить - большая проблема.
Сложно генерировать?
Или, использовать стандартный механизм /:module/:controller/:action/:params
Вынести admin в отдельный поддомен и тогда редко используемые routes совершенно не будут мещать чаще используемым. Или...
Вообще не вариант. Ни один более-менее серьезный проект без обратных ссылок я реализовывать не буду. Причина - usecase-ы, с которыми я уже набивал себе шишки:
- Видоизменить ссылку: domain.com/user/username => username.domain.com
- Изменение порядка параметров в ссылке: domain.com/user/username/edit => domain.com/username/edit, domain.com/user/username/edit => domain.com/user/edit
- Изменение типов ссылок: domain.com/category/page => domain.com/category/page.html, domain.com/category/page => domain.com/page.html
И их комбинации. Без правильной генерации ссылок эти действия превращаются в ад, когда можно либо что-то пропустить, либо наоборот заменить лишнее. Не говоря о титаническом ручном труде. Это, мягко говоря, не способствует легкости использования фреймворка.
Router обрабатывает routes в порядке их добавления, следовательно можно добавить /admin/* routes последними. Пару-тройку милисекунд админ может потерпеть.
Разве не наоборот? Последние добавленные роуты обрабатываются первыми вроде как: "Since you can add many routes as you need using add(), the order in which routes are added indicate their relevance, lastest routes added have more relevance than first added. Internally, all defined routes are traversed in reverse order until Phalcon\Mvc\Router finds the one that matches the given URI and processes it, while ignoring the rest.". И это не решает проблему генерации ссылок.
Я бы советовал не заморачиваться, если проблема не решается в течении одного дня (эта уже тут с пятницы).
Проблема, в тестовом приложении, была решена моментально, тупыми ссылками (/admin, /admin/users и пр.). Но если не решить проблему на будущее - я не могу использовать фреймворк в реальных проектах.
Как-то так. Я был бы очень рад, если бы ссылки генерировались с помощью c-кода, но... Пока, к сожалению, времени не хватает на реализацию задуманного, как появится - сделаю и покажу в этой ветке. Ну или кто-нибудь другой может сделает к этому времени.