non è tanto strana.

Non so' se in php è possibile farlo, ma in altri linguaggi si possono dichiarare anche classi all'interno di classi (prendono il nome di classi annidate).

Allo stesso modo è possibile dichiarare funzioni all'interno di funzioni, funzioni annidate per l'appunto, e sono disponibili solo nello scope in cui sono state dichiarate.

In linguaggi di programmazione funzionali come ML, Fortran o LISP, pratiche del genere sono diffusissime