Supponiamo di avere una tabella utenti e in quella tabella utenti ho un role_id.
Nella mia tabella dei ruoli ho:
   users
  - id
  - role_id    
   roles
  - id
  - name    
   roles
id   |  name
1    |  admin
2    |  normal    
Ora nel codice voglio disabilitare l'accesso alla pagina admin.php. Quindi in cima ho messo
if ($user->role_id != 1){
    header('location: forbidden.php');    
}
Sembra una cattiva pratica affidarsi a role_id come 1. Penso che sia meglio fare qualcosa del tipo:
if ($user->role_name == 'admin'){ ...
Ora mi affido al testo del ruolo, che non è eccezionale. Quindi ho creato classi const come:
class RoleType{
    const ADMIN = "admin";
    const NORNAML = "normal";
}
....
if ($user->role_name == RoleType::ADMIN){ ...
Il problema qui è ora se lo cambio nel database Devo cambiare la mia classe RoleType.
Credo che nessuno di questi sia l'ideale.
Qual è il modo migliore per gestirlo?