Las funciones anidadas en PHP lanzan una excepción cuando el externo se llama más de una vez

no asumo que tengo lo siguiente

function a(){
  function b(){}
}
a(); //pass
a(); //error

Por eso en la segunda convocatoria se lanza una excepción y dice

cannot re-declare  function b()

pensé que cada llamada de función hace un nuevo registro activo que contiene su propio alcance; como en otros lenguajes que PHP cuando declaramos una variable en una función y llamamos a esa función, todas las variables están vivas para su alcance, ¿por qué la función interna no es la misma?