Puedes leer un poco sobre el strategy pattern, ya que en lugar de tener varios métodos proteger_administrador etc. hace más sencillo si haces flexible eso, así el mantenimiento es mucho más flexible, por ejemplo:
Código PHP:
Ver originalclass TiposUsuarios
{
const ADMINISTRADOR = 'Administrador';
const DOCENTE = 'Docente';
const ALUMNO = 'Alumno';
}
class Login
{
public function __call($method, $args)
{
if (substr($method, 0, 8) == 'proteger') { $this->_proteger
(substr($method, 8)); }
}
private function _proteger($nivel)
{
if (!empty($_SESSION['autentificado']) { $r = new ReflectionClass('TiposUsuarios');
$constants = $r->getConstants();
return $this->imprime($constants[$_SESSION['autentificado']));
} else {
header("Location: index.php"); }
} else {
header("Location: index.php"); }
}
}
El uso es mas o menos similar, solo que llamas a los métodos y el __call los atrapa, por ejemplo:
Código PHP:
Ver original<?php
include("clases/Cargar_clases.php");
$login=new Login();
$login->protegerAdministrador();
// o
$login->protegerDocente();
$login->cerrar_sesion_inactiva();
El __call atrapa el tipo y lo pasa a _proteger que es la que hace el trabajo.
La ventaja de hacerlo así es que agregar nuevos tipos de usuarios es mucho más flexible ya que editas la clase TiposUsuarios y agregas los permisos necesarios, te ayuda mucho a la larga en cuanto al mantenimiento.
Saludos.