Как правильно реализовать метод? Есть код во вреймворке. Метода find() не было, и система ругалась, я его добавил, но теперь ошибка: Undefined variable: user ругается на строку return new static($user); пробовал просто return $user; то же самое.
1) Как всё же отдать данные всех юзеров стразу
2) Как же тогда работает точно такой же return в методе ниже findIdentityByAccessTokenclass User extends \yii\base\Object implements \yii\web\IdentityInterface
{
public $id;
public $username;
public $password;
public $authKey;
public $accessToken;
private static $users = [
'100' => [
'id' => '100',
'username' => 'admin',
'password' => 'admin',
'authKey' => 'test100key',
'accessToken' => '100-token',
],
'101' => [
'id' => '101',
'username' => 'demo',
'password' => 'demo',
'authKey' => 'test101key',
'accessToken' => '101-token',
],
];
public static function find()
{
return new static($user);
}
public static function findIdentityByAccessToken($token, $type = null)
{
foreach (self::$users as $user) {
if ($user['accessToken'] === $token) {
return new static($user);
}
}
return null;
}
....

21 Авг 2019 в 07:01
179 +1
0
Ответы
1

1) Для того чтобы вернуть данные всех пользователей сразу, вам нужно изменить метод find() следующим образом:

public static function find()
{
$users = [];
foreach (self::$users as $userData) {
$users[] = new static($userData);
}
return $users;
}

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

2) Код метода findIdentityByAccessToken() правильно работает, потому что в цикле вы проходитесь по массиву $users и проверяете соответствие доступного токена переданному токену. В случае совпадения создается и возвращается объект User.

В вашем случае, для создания объекта User в методе find(), вам необходимо передать конкретного пользователя из массива $user. Поэтому вам нужно изменить строку:

return new static($user);

на

return new static($userData);
20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир