Как правильно реализовать метод? Есть код во вреймворке. Метода 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
160 +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
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 157 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир