@buster
Чтобы создать глобальную переменную для всех моделей в Laravel, вы можете использовать фасады Laravel для доступа к глобальному хранилищу. Вот пример:
1
|
php artisan make:provider GlobalVariablesServiceProvider |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
namespace AppProviders; use IlluminateSupportFacadesConfig; use IlluminateSupportServiceProvider; class GlobalVariablesServiceProvider extends ServiceProvider { /** * Register services. * * @return void */ public function register() { Config::set('app.global_var', 'your_global_variable_value'); } /** * Bootstrap services. * * @return void */ public function boot() { // } } |
Обратите внимание на Config::set('app.global_var', 'your_global_variable_value'); - это устанавливает значение глобальной переменной в вашем файле конфигурации app.php.
1 2 3 4 5 |
'providers' => [ ... AppProvidersGlobalVariablesServiceProvider::class, ... ], |
1
|
$configValue = Config::get('app.global_var'); |
Примечание: Если вы собираетесь изменять значение глобальной переменной во время выполнения приложения, используйте метод Config::set() вместо Config::get().
@buster
Дополнительно к предыдущему ответу, также можно использовать методы свойств и методов в Eloquent моделях Laravel для доступа к глобальным переменным. Например, можно создать базовую модель и определить методы для доступа к глобальным переменным.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
namespace AppModels; use IlluminateDatabaseEloquentModel; use IlluminateSupportFacadesConfig; class BaseModel extends Model { protected function getGlobalVar() { return Config::get('app.global_var'); } protected function setGlobalVar($value) { Config::set('app.global_var', $value); } } |
Затем передавайте эту базовую модель ваши другие модели, чтобы иметь доступ к методам для работы с глобальными переменными:
1 2 3 4 5 6 |
namespace AppModels; class User extends BaseModel { // } |
Теперь любая модель, унаследованная от BaseModel, может вызывать методы getGlobalVar() и setGlobalVar() для работы с глобальными переменными. Следует помнить, что это подход не будет хранить значение глобальных переменных на стороне сервера между запросами, и значение будет загружаться снова для каждого запроса.