<?php namespace SHServ\Entities; use \SHServ\Entities\Session; use \SHServ\Entities\Profile; class User extends \SHServ\Middleware\Entity { public static $table_name = "users"; protected static $fields = [ "id", "role", "nickname", "password", "create_at", "update_at" ]; protected Profile $profile; public function __construct(Int $uid, Array $data = []) { parent::__construct(self::$table_name, $uid, $data); // TODO: `uid` - is fail, need `profile_id` $this -> profile = new Profile($uid); } public function profile(): Profile { return $this -> profile; } public function last_session(): ?\SHServ\Entities\Session { return $this -> get_pet_instance("Session", function() { return app() -> factory -> getter() -> get_session_by("uid", $this -> id()); }); } public function role_is(String $role_name): Bool { return $this -> role == $role_name; } // Static methods public static function is_exists_by(String $field_name, String $field_value): Bool { return app() -> utils -> table_row_is_exists( app() -> thin_builder, self::$table_name, $field_name, $field_value ); } }