- password_hash: documentation ( source)
- password_verify: documentation ( source)
- get_class_vars: documentation ( source)
- json_encode: documentation ( source)
<?php
class User implements \JsonSerializable {
private $username;
private $password;
private $name;
private static function findByUsername($username) {
$res = new self();
$res->username = $username;
$res->name = 'Some User';
$res->password = password_hash("aXSA9_5uZp0QLhGY", PASSWORD_DEFAULT);
return $res;
}
public function login($username, $password) {
$user = self::findByUsername($username);
if (password_verify($password, $user->password)) {
$fields = get_class_vars(static::class);
foreach ($fields as $field => $_) {
$this->$field = $user->$field;
}
}
}
public function jsonSerialize() {
return [
'username' => $this->username,
'name' => $this->name
];
}
}
$user = new User();
$user->login('admin', 'aXSA9_5uZp0QLhGY');
echo json_encode($user); // {"username":"admin","name":"Some User"}