Как правильно реализовать метод? Есть код во вреймворке. Метода 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; } ....
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. Поэтому вам нужно изменить строку:
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);