Eu não entendi muito bem até hoje como funciona essa brincadeira de static no PHP.
Pois é muito confuso, pois em teoria o objecto estatico ele fica alocado na memoria e toda operação em cima dele seria uma sobreescrita, mas se voce analisar no caso do exemplo o objecto estatico foi chamado diversas vezes até que resultou no Base B B A B.
Por que isso aconteceu?
Vamos analisar o código
Primeiro começa a base
Logo o nosso objecto estatico whoami começa com o Base como echo e depois a function test() chama esse metodo estatico whoareyou que chama o whoami.
Então logo como primeiro resultado é Base. porque é o valor inicial de retorno.
Depois vamos para classe A que sobreescreve o whoami com outro valor e assim vai indo.
Como procedencia, os objetos mesmo sendo estaticos, eles vão ser chamados de acordo com o tempo de compilação, então a gente começou com BASE e depois foi A e depois foi o A de novo porque tu tem um self:: ali chamado de novo o metodo pai e por ultimo chama a ultima instância.
Eu não sei se fui claro, mas é meio esquisito mesmo.