parts[$position])) { $position++; } $this->parts[$position] = ["name" => $name, "link" => $link]; } } class UserOptionsBuildingEvent extends Event { /** @var array */ public $parts = []; public function add_html(string $html) { $this->parts[] = $html; } } class UserPageBuildingEvent extends Event { /** @var User */ public $display_user; /** @var array */ public $stats = []; public function __construct(User $display_user) { parent::__construct(); $this->display_user = $display_user; } public function add_stats(string $html, int $position=50) { while (isset($this->stats[$position])) { $position++; } $this->stats[$position] = $html; } } class UserCreationEvent extends Event { /** @var string */ public $username; /** @var string */ public $password; /** @var string */ public $email; /** @var bool */ public $login; public function __construct(string $name, string $pass, string $email, bool $login) { parent::__construct(); $this->username = $name; $this->password = $pass; $this->email = $email; $this->login = $login; } } class UserLoginEvent extends Event { public $user; public function __construct(User $user) { parent::__construct(); $this->user = $user; } } class UserDeletionEvent extends Event { /** @var int */ public $id; public function __construct(int $id) { parent::__construct(); $this->id = $id; } }