2016-04-05 5 views
1

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

Вопрос: где поставить этот файл (теперь он находится в директории/src/AppBundle) и как загрузить его в Symfony? Может быть, какая-то передовая практика.

exmaple Файл:

<?php 

// functions.php 

define('CONSTANT_NAME', 'constant_value'); 

function doSomething() 
{ 
} 

Обновлено: также некоторые функции должны быть загружены (в виде отдельного файла) только в среде "Dev". Может быть, добавить «include_once» в app_dev.php?

ответ

2

Я бы поместил его в папку /src, может быть /src/functions.php - вы можете принять решение в соответствии с вашими предпочтениями. Чтобы загрузить его, вы можете изменить composer.json и добавить files в конфигурацию autoload, а затем запустить composer update.

"autoload": { 
    "files": ["src/functions.php"] 
} 

Так что functions.php требуется каждому запросу.

+0

спасибо. Можете ли вы предложить решение для случая, когда эти функции требуются только для среды «dev»? Поместите «include_once» в «web/app_dev.php» или еще какое-нибудь «интеллектуальное» решение? – Alex

+0

Я думаю, что это нужно в 'web/app_dev.php' достаточно хорошо -' require (__ DIR __. '/ ../src/yourfile.php'); '- вы также можете включить его в свой [' app/AppKernel .php'] (https://github.com/symfony/symfony-standard/blob/master/app/AppKernel.php#L21), но это только предпочтение – Federkun

+0

@alex, если вы хотите использовать многоразовое решение, вы можете также создайте пакет для включения только на 'dev' env и включите ваши файлы в свой класс' Bundle', например: 'class MyBundle extends Bundle {public function boot() {// include here}}' – Federkun

Смежные вопросы