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