Как правильно вынести в отдельный файл логин и пароль из User модели в Yii2?

В Yii2 для вынесения логина и пароля из User модели в отдельный файл, можно воспользоваться конфигурационными файлами приложения.

Итак, для начала, создадим новый файл конфигурации в папке config приложения (по умолчанию). Допустим, мы назовем его credentials.php.

В этом файле мы определим две переменные: $login и $password, в которых будут содержаться наши данные авторизации:

<?php

$login = 'my_login';
$password = 'my_password';

return [
    'login' => $login,
    'password' => $password,
];

После этого, мы должны подключить этот файл в основном файле конфигурации приложения main.php (также находится в папке config).

Для этого добавим следующий код в массив components в файле main.php:

'components' => [
    // ...
    'auth' => [
        'class' => 'appcomponentsAuth',
        'login' => require(__DIR__ . '/credentials.php')['login'],
        'password' => require(__DIR__ . '/credentials.php')['password'],
    ],
    // ...
]

В этом примере, мы добавляем новый компонент auth в основной конфигурации приложения. Указан класс appcomponentsAuth, который мы создадим в следующем шаге.

Осталось только создать класс Auth, наследующий yiibaseComponent, в папке components (вы должны создать ее, если ее нет):

<?php

namespace appcomponents;

use yiibaseComponent;

class Auth extends Component
{
    public $login;
    public $password;
    // ...
}

После выполнения этих шагов, вы можете использовать логин и пароль, указанные в отдельном файле, в вашей модели User следующим образом:

namespace appmodels;

use Yii;

class User extends yiidbActiveRecord
{
    public function login()
    {
        $login = Yii::$app->auth->login;
        $password = Yii::$app->auth->password;
        // ...
    }
}

Теперь конфиденциальные данные, такие как логин и пароль, находятся в отдельном файле и при необходимости их можно легко изменить без внесения изменений в модель User.