2012-04-26 6 views
1

Я хочу использовать функцию во всех моделях класса (в папке проекта и в папке плагинов).Функция Symfony доступна во всех моделях

Где я должен заявить об этом?

+0

Возможно, что вы задали этот вопрос уже сегодня? http://symfony.com/doc/current/book/service_container.html – KingCrunch

+1

Вспомогательная функция или фактическое поведение классов сущностей? – yitznewton

ответ

3

В зависимости от того, что делает ваша функция, вы можете создать файл в папке lib, а затем вызвать его из любого места в вашем приложении. Это полезно в проекте Symfony для определения общих функций (например, панели инструментов).

Например, в the Jobeet tutorial, они определяют метод, называемый slugify в /lib/Jobeet.class.php(обязательно имя файла с .class.php в конце так Symfony будет автоматически загружать его). Затем вы можете позвонить Jobeet::slugify() где угодно в вашем приложении/модели/плагине/представлении.

-4

Это решение работает с Symfony 1.4:

  • Вы создаете новый файл, в котором вы объявляете функцию, которую вы хотите быть доступны везде.
  • Загрузите этот файл с помощью auto prepend file setting в файл php.ini.

Если все сделано правильно, эта функция доступна во всех ваших сценариях, независимо от модели, плагина или чего-то еще из вашего проекта.

+3

Лучше всего использовать 'auto_prepend_file' для каталога. В противном случае он будет включен для всех сайтов, использующих 'php.ini'. Независимо от этого, не уверен, что создание такой внешней зависимости, как это, это путь. У Symfony 1.4 есть каталог '/ lib'. – webbiedave

+1

-1 Да, я должен согласиться с последним предложением @ webbiedave. Использование параметра php.ini для этого было бы * чрезвычайно неожиданным для любого разработчика, который не был близко знаком с проектом, особенно когда Symfony уже предоставляет механизм для его выполнения. –

+0

@Phoenix: Если он работает, он работает. Не сказать, что это лучший ответ, но технически это правильно. Доступны настройки каталога на каждый php.ini - см. Пользователь ini. – hakre