Я начинаю с проекта Symfony2. Я знаю основы основы, но у меня есть вопрос: Где подходящее место для размещения тех вспомогательных классов, которые я создаю для помощи или для бизнес-логики?Symfony2 где разместить специальные вспомогательные классы
ответ
Ответ Макса правильный. Однако я сомневаюсь в том, что он рекомендует для вашего кода.
следующие классы и файлы имеют специфические огневые:
Service Container Extensions (принадлежат) внедрение зависимости/
из http://symfony.com/doc/current/cookbook/bundles/best_practices.html
Это говорит ваши услуги должны быть помещены в папку называемый «DependencyInjection», а не «Services». В полной мере, он должен быть SRC/Foo/BarBundle/внедрение зависимости
Я говорю это как человек, который был бывший и только что закончил переместив их всех к последней (!)
. Вы ошибаетесь, вы должны хранить DI-расширения в DependencyInjection, а не сами службы. http://symfony.com/doc/current/best_practices/business-logic.html – PachinSV
Я согласен с @PachinSV. На этой странице это явно указано: http://symfony.com/doc/current/cookbook/bundles/extension.html –
Вы можете создать пользовательские классы под своим Bundle, например, в папке Helper/.. Однако для использования этих помощников в вашем коде вам нужно будет указать этих помощников в файле описания сервиса (например, services.xml) ... Затем вы можете использовать $ container-> get ('your_helper') ->
Лучший способ сохранить бизнес-логику - создать сервис для обработки всей логики. Так что это будет в:
src/Foo/BarBundle/Service
и вам нужно вызвать службу в services.yml
.
Недавно я сделал некоторые небольшие работы по существующий проект Symfony2. Как описано ответ от Tuong Le, я создал свои классы Helper под Helper
директории имя расслоения и класса с суффиксом Helper т.е. вспомогательный класс находится по адресу:
src/MyBundle/Helper/MyUtilHelper.php
я могу использовать MyUtilHelper
класс в моей пачке, не вызывая контейнер обслуживания, то есть мне не нужно было звонить.
$container->get('my_util');
Я действительно не знаю, есть ли какая-то специальная конфигурация. в моей настройке; кто-то уже получил его настройку, и я просто добавлял новые функции.
Что @Adam говорит неправильно, вы должны хранить ваш Dependency Injection Расширения в каталоге DependecyInjection, не сам услуг. В документации говорится, что вы можете хранить свои (пользовательские) классы бизнес-логики в любом месте, которое вам нравится.
http://symfony.com/doc/current/best_practices/business-logic.html
Согласно официальной документации, - в частности - Symfony Best Practices - вы должны хранить свои услуги в Utils папку под ЦСИ.Я верю, что это правильный путь, независимо от того, хотите ли вы или не хотите, чтобы функции, предоставляемые службами вашего пакета, доступны для других частей приложения через Service Container. Кроме того, вы можете хранить вспомогательные классы в любом удобном для вас месте. Что касается ответов @Adam Knowles и @PachinSV - они не совсем правы, потому что они не отвечают на ваш вопрос: «Где подходящее место для поддержки тех вспомогательных классов, которые я создаю для помощи или для бизнес-логики?» или «Где хранить классы, которые я хочу зарегистрировать и использовать через Service Container», но не там, где нужно положить комплект Расширение класса - основная цель - предоставить информацию о конфигурации, которая должна быть , автоматически загружается из вашего пакета в приложения Сервисный контейнер во время процесса загрузка ядра.
- 1. Где разместить вспомогательные функции в Django 1.5
- 2. Где я должен разместить вспомогательные функции rspec?
- 3. Вспомогательные классы для моделей
- 4. Вспомогательные классы синтаксиса NUnit
- 5. Вспомогательные функции проекта Django/классы
- 6. Symfony2: Где разместить код для всех маршрутов?
- 7. Где помещать сущности «вспомогательные функции»?
- 8. Где разместить классы ViewModel в MVC
- 9. Где разместить свои собственные общедоступные классы
- 10. Где разместить классы HttpHandler в .NET?
- 11. Где можно разместить классы фильтра laravel 4?
- 12. Где разместить дополнительные классы, используемые в JUnit?
- 13. Где разместить мои специальные исключения для системы в Zend Framework
- 14. @ Html.EditorFor вспомогательные классы не добавил
- 15. Где поставить вспомогательные методы?
- 16. Где добавить потенциально повторно используемые вспомогательные функции?
- 17. Где разместить пакеты приложений?
- 18. Специальные классы полиморфизма
- 19. Где разместить пользовательские данные
- 20. Колба вспомогательные классы и возвращаемые значения
- 21. Где выполняются угловые вспомогательные функции?
- 22. Django: Где поставить вспомогательные функции?
- 23. Bootstrap 3, реагирующие вспомогательные классы, Астерикс
- 24. Entity Framework 3.0 и вспомогательные классы
- 25. Как использовать вспомогательные классы в zf2?
- 26. Boostrap4 вспомогательные классы pull-xs-left
- 27. BinaryStreams-подобные вспомогательные классы для каналов NIO?
- 28. Что такое вспомогательные классы и скрипты?
- 29. Где разместить общую бизнес-логику для всех страниц в symfony2
- 30. Мнение о том, где разместить функцию в Symfony2
Вы знаете, ради завершения. Было бы хорошо, если бы вы на самом деле получили правильный ответ на один из приведенных ниже ответов, а затем укажите, как вы внедрили решение, и если оно сработало хорошо для вас в конце. Все дело в том, чтобы давать и принимать, а не просто принимать – abbood