Включить пользовательские функции рекомендуется в Symfony2

Я новичок в Symfony2, и я не могу понять, где я должен сделать включает в себя мои пользовательские функции кросс-проектов (например,array_merge_overwrite, array_last, etc.)? Я использую оба типа приложений: web (MVC) и console (extends ContainerAwareCommand).

или есть другой "правильный путь" для этого?

2 ответов


создать сервис и поместите в него свою общую функциональность. Например, вы можете назвать его ArrayService и зарегистрируйте его в контейнере как array.service. Затем вы можете получить доступ к этой службе с контроллеров через

$this->get('array.service');

и от команды с помощью

$this->getContainer()->get('array.service');

Итак, ваш код будет выглядеть примерно так:

$element = $this->get('array.service')->last($array); // or ->arrayLast($array)

Если вам нужна одна и та же функциональность в нескольких проектах, сделайте пакет с этой услугой и добавьте его в каждого проекта. Затем он будет установлен при запуске bin/vendors install сценарий.


вы можете преобразовать свои функции в статические методы некоторого класса, чтобы сделать их автоматически загружаемыми. Или... что ж... Поместите их туда, где вы хотите и требуете (), откуда они вам нужны каждый раз.