los frameworks usan clases para hacer esto, fijate
symfony2,
zendframework, mira el quickstart que es el mas básico,
cakePHP, como vez ellos lo realizan, como tendrías que revisar el core de esto para verlo, no me he puesto a hacer eso ya que hasta ahora los que he usado me han funcionado, saludos