Я щойно почав працювати з Laravel. Мені потрібно переписати цілу систему, яку я створив кілька років тому, використовуючи Laravel 4 як базовий фреймворк. У моїй старій системі раніше у мене був constant.php
файл із декларованими деякими константами та globals.php
файл, який містив безліч наборів масивів (наприклад, статуси категорій, тип подій, мови тощо). Роблячи це, я міг би використати щось на зразок
foreach ( $langs as $code => $domain ) {
// Some stuff
}
в будь-якому місці мого додатка.
Моє питання полягає в тому, як я можу зберігати цю інформацію так званим "способом laravel". Я спробував використовувати якийсь об'єкт для зберігання цієї інформації, встановивши це як послугу і створивши для неї фасад:
app / libraries / Project / Constants.php
namespace PJ;
class Constants {
public static $langs = [
'es' => 'www.domain.es',
'en' => 'www.domain.us',
'uk' => 'www.domain.uk',
'br' => 'www.domain.br',
'it' => 'www.domain.it',
'de' => 'www.domain.de',
'fr' => 'www.domain.fr'
];
}
app / libraries / Project / ConstantsServiceProvider.php
namespace PJ;
use Illuminate\Support\ServiceProvider;
class ConstantsServiceProvider extends ServiceProvider {
public function register() {
$this->app->singleton('PJConstants', function() {
return new Constants;
});
}
}
app / libraries / Project / ConstantsFacade.php
namespace PJ;
use Illuminate\Support\Facades\Facade;
class ConstantsFacade extends Facade {
protected static function getFacadeAccessor() {
return 'PJConstants';
}
}
composer.json
"psr-4": {
"PJ\\": "app/libraries/Project"
},
і тому я отримую доступ до цього майна як PJ\Constants::$langs
.
Це працює, але я сумніваюся, що це найбільш ефективний чи правильний спосіб зробити це. Я маю на увазі, чи це правильний спосіб "поширити" змінну, створивши цілого Постачальника послуг та фасади та все подібне? Або куди мені покласти ці дані?
Дякую за будь-яку пораду.
EDIT # 01
Дані, які я хочу передати всім контролерам, і подання можуть бути безпосередньо встановлені в сценарії, як у прикладі на початку мого допису, але вони також можуть генеруватися динамічно, наприклад, з бази даних. Ці дані можуть бути списком категорій. Вони потрібні мені у всіх поданнях для створення навігаційної панелі, але вони також потрібні для визначення деяких шаблонів маршрутизації (наприклад /category/subcategory/product
), а також для аналізу деякої інформації в декількох контролерах (наприклад, отримання інформації з категорії, що містить продукт X).
Мій масив приблизно такий:
$categories = [
1 => ['name' => 'General', 'parent' => 0, 'description' => 'Lorem ipsum...'],
2 => ['name' => 'Nature', 'parent' => 0, 'description' => 'Lorem ipsum...'],
3 => ['name' => 'World', 'parent' => 0, 'description' => 'Lorem ipsum...'],
4 => ['name' => 'Animals', 'parent' => 2, 'description' => 'Lorem ipsum...']
]
Просто як приклад. Index - це ідентифікатор категорії, а Value - це інформація, пов’язана з категорією.
Мені потрібен цей масив, також доступний у всіх контролерах та поданнях.
Отже, чи слід зберігати його як змінну Config? Як інакше я міг зберігати ці дані; який би був найкращий та семантично правильний спосіб?