fetch($query, $user); foreach ($this as $key => $value) { if (isset($userQuery[$key])) { $this->$key = $userQuery[$key]; } } $this->profileData = (object)[ $this->id, $this->pass, $this->email, $this->realname, $this->borndate, $this->info, $this->ip, ]; } public static function getInstance($user = null): self { if (is_null(self::$instance)) { self::$instance = new self($user); } return self::$instance; } public function profile(): UserProfile { if (is_null($this->profile)) { $this->profile = new UserProfile( $this->id, $this->pass, $this->email, $this->realname, $this->borndate, $this->info, $this->ip, ); } return $this->profile; } public function effect(): UserEffect { if (is_null($this->effect)) { $this->effect = new UserEffect(); } return $this->effect; } public function stats(): UserStats { if (is_null($this->stats)) { $this->stats = new UserStats($this->id); } return $this->stats; } public function userInfo(): UserInfo { if (is_null($this->userInfo)) { $this->userInfo = new UserInfo($this->id); } return $this->userInfo; } public function money(): UserMoney { if (is_null($this->userMoney)) { $this->userMoney = new UserMoney($this->id, $this->money); } return $this->userMoney; } public function getId(): int { return $this->id; } public function getLogin(): string { return $this->login; } public function getLevel(): int { return $this->level; } public function getAlign(): int { return $this->align; } public function getClan(): ?string { return $this->clan; } /** * @param string|null $shortName Короткое название клана. Передать null для очистки. */ public function setClan(?string $shortName) { $this->clan = is_null($shortName) ? null : $shortName; $this->saveUser(); } public function getAdmin(): int { return $this->admin; } public function getRoom(): int { return $this->room; } /** * @param mixed $room */ public function setRoom($room) { $this->room = $room; } public function getBlock(): int { return $this->block; } public function getShadow(): string { return $this->shadow; } /** * @param mixed $shadow */ public function setShadow($shadow): void { $shadows = [ 'm01', 'm02', 'm03', 'm04', 'm05', 'm06', 'm07', 'm08', 'm09', 'm10', 'f01', 'f02', 'f03', 'f04', 'f05', 'f06', 'f07', 'f08', 'f09', 'f10', ]; if (in_array($shadow, $shadows) && $this->getShadow() === '0.png') { $this->shadow = $shadow . '.png'; } } public function getExperience(): int { return $this->experience; } /** * @param int $experience */ public function addExperience(int $experience): void { $this->experience += $experience; Db::getInstance()->execute('update users set experience = ? where id = ?', [$experience, $this->id]); } public function getBattle(): int { return $this->battle; } public function getZayavka(): int { return $this->zayavka; } public function setOnline() { Db::getInstance()->execute('update online set real_time = ? where user_id = ?', [time(), $this->getId()]); } /** Сохраняет в базу актуальные логин, пароль, email, имя, дату рождения, текст инфы, склонность, клан, образ, права админа. * */ public function saveUser() { $query = 'update users set login = ?, align = ?, clan = ?, shadow = ?, admin = ? where id = ?'; $vals = [ $this->login, //set $this->align, $this->clan, $this->shadow, $this->admin, $this->id //where ]; Db::getInstance()->execute($query, $vals); } }