Ok, fin qui ci ero quasi arrivato, però a questo punto non so come gestire la sicurezza.
Ogni variabile veniva "filtrata" nella rispettiva set a seconda che fosse una stringa o un intero.

Codice PHP:
public function setName($value)
{
  
$this->name htmlspecialchars(trim($value));
}

public function 
setAge($value)
{
  
$this->age intval($value);

Con i metodi magici non so come fare queste operazioni a seconda del tipo della variabile.