В основном это зависит от качества связок. И это связано с тем, насколько они связаны.
Я бы отказался от пункта 3 при запуске (create different Symfony2 project for admin area and api.
) - возможно, вы не создаете два отдельных приложения.
Есть несколько ядро для другой части приложения (API, администратора и основной сайт)
Общие проблемы создается слушателями и услуг в контейнере. Особенно, когда ваш слушатель должен работать только в одном из контекстов приложения (api/frontend/backend). Даже если вы не забыли проверить его в самом начале метода слушателя (и делать магию только в желаемом контексте), то все же слушатель может зависеть от инъецируемых услуг, которые нужно сконструировать и вставить в любом случае. Хорошим примером здесь является FOS/RestBundle: даже если вы настроите zones
, то все еще на интерфейсе (когда активирован view_listener
для api) view_handler
инициализируется и вводится слушателю - https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Resources/config/view_response_listener.xml#L11 Я не уверен, что здесь 100%, но также отключает переводы и веточку (и т. д.) для API (большая часть api не нужна) ускорит его.
Создание отдельного ядра для контекста API позволило бы решить эту проблему (в нашем проекте мы используем одно ядро, и нам пришлось отключить этот прослушиватель), поскольку профили blackfire.io говорили нам, что он сохраняет ~ 15 мс на каждом фронтовом запросе).
Создание нового ядра для API гарантирует, что ни один из служб/слушателей, основанных только на API, не будет вмешиваться в визуализацию frontend/backend (он работает в обоих направлениях). Но это создаст для вас дополнительную работу по созданию общих components
, используемых во многих пакетах внутри проекта (из разных ядер), но в мире с композитором это уже не огромная задача.
Но это случай только для людей, которые измеряют каждую миллисекунду времени отклика. И зависит от качества ваших/3dparty.Если все нормально, тогда вам не нужно возиться с ядрами.
вы можете попробовать создать Environnement для выполнения этой последующей Dev Exemple для выполнения этого 'если (in_array ($ this-> getEnvironment(), array ('dev', 'test'))) {'in appKernel – pietro
Что вы думаете о моем предыдущем комментарии? – pietro
Ваш забыли один из вариантов: разделить код в нескольких пакетах, он уже обсуждался здесь: [Должно ли все действительно быть пакетом в Symfony 2.x?] (Http://stackoverflow.com/q/9999433/2257664) или [Symfony2 концептуальная проблема: общие связки против конкретных) (http://stackoverflow.com/q/8012191/2257664). –