2015-04-08 3 views
3

В старом laravel 4 Code мы используем константы.php для определения глобальных варов.laravel 5: Где определить глобальные Vars?

Каковы наилучшие методы использования определения варов в Laravel 5?

Мы бы не хранить его в файле .env или routes.php

+0

«variables» - «константы» Эти имена не звонят вам ни за какие колокола? Вы не должны использовать глобальные переменные. Для «констант» приложения вы должны использовать «Config». Для констант класса вы должны использовать константы класса. –

+0

@SergiuParaschiv Вы говорите: «Вы не должны использовать глобалы каким-либо образом», но сразу после этого вы говорите «вы должны использовать Config». Пожалуйста, объясните, как эти два отличаются? – PeeHaa

+0

'Config' используется для _constants_, а не _variables_. Глобалы, будь то переменные или тщательно используемые в качестве констант, являются плохими. Глобальные переменные - это просто плохая практика. Для констант есть лучшие способы, как я сказал - 'Config'. –

ответ

10

Я просто хочу немного улучшить @ ответ Адама. Предположим, что онлайн-корзина. Затем вы хотите, чтобы глобальный var хранил currency symbol для отображения в представлениях. Поскольку это значение может быть изменено по времени, вы можете указать его в App\Providers\ConfigServiceProvider так:

public function register() 
{ 
    $currency = 'whatever you want'; 

    config([ 
     'currency' => $currency 
    ]); 
} 

$currency = config('currency') вар глобальна для использования на всем приложении даже запрос еще не прибыл в контроллерах (вы можете прочитать больше около middleware classes).

Если вы окончательно хотите использовать constanst (значения никогда не изменяется), вы могли бы рассмотреть возможность установить значение в конфигурационных файлах direclty, как показано ниже:

# create a new config file config/customs.php 

# like content, you could start with: 
return [ 
    'currency' => '$' 
]; 

Наконец, вы грейферы значения в вашем приложении с config('customs.currency').

0

Зависит от того, какой переменных, которые вы пытаетесь сохранить. Если они связаны с моделью, они должны храниться в модели, если они связаны с окружающей средой, они должны храниться в .env. Какие переменные вы пытаетесь сохранить?

+0

У нас есть один файл в config/folder, который нуждается в этом глобальном Vars, если мы храним его в соответствующей модели, мы получили Fatal Error, потому что \ Eloquent недоступен. Я думаю, что это нарушено концепцией. –

+0

Какие переменные вы пытаетесь сохранить? – Adam

+0

например: define ('COUNTRY_ID_AU', 36); –

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