Как сделать глобальную переменную для всех моделей в laravel?

Пользователь

от magali , в категории: PHP , месяц назад

Как сделать глобальную переменную для всех моделей в laravel?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jakayla , месяц назад

@magali 

В Laravel можно создать глобальную переменную для всех моделей, определив ее в базовой модели.

  1. Создайте базовую модель, например, BaseModel, в директории appModels:
1
2
3
4
5
6
7
8
namespace AppModels;

use IlluminateDatabaseEloquentModel;

class BaseModel extends Model
{
    public static $globalVariable = 'value';
}


  1. Теперь вы можете использовать эту переменную в любой модели, наследующей BaseModel:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
namespace AppModels;

class User extends BaseModel
{
    public function someMethod()
    {
        $globalVar = self::$globalVariable;
        // используйте переменную здесь
    }
}


  1. Если вы хотите изменить значение глобальной переменной, вы можете сделать это из любой модели, наследующей BaseModel:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
namespace AppModels;

class SomeOtherModel extends BaseModel
{
    public function someMethod()
    {
        self::$globalVariable = 'new value';
        // глобальная переменная изменилась для всех моделей
    }
}


Теперь вы можете использовать BaseModel::$globalVariable в любой модели, наследующей BaseModel. Помните, что глобальные переменные могут быть не лучшим решением, если вы хотите сделать что-то более сложное, в таком случае может быть лучше использовать конфигурационные файлы или сервис-провайдеры.