Data types:
Primeramente aclarar de aquí en adelante los data types. ¡ los objetos no existen !, y para manejar datos emplearemos solo arrays no asociativos, además de los tipos de datos triviales (números, strings).
Ámbito de las funciones en PHP:
En este ejemplo, como vemos, una vez llamada la función outer desde el ámbito global, también podremos llamar a las funciones declaradas en outer. Ésto nos priva de un ámbito de funciones anidadas. Lo cual, en un programa con orientación funcional podría traernos muchos problemas! Un simple ejemplo está en que si dos programadores arman, cada uno, una función y luego las ponen en un mismo archivo, van a tener que tener un enorme cuidado con el nombre de las funciones que hayan definido dentro.
Peeero, desde la versión 5.3+ podemos restringir el ámbito de las funciones, simplemente creandolas como funciones anónimas y luego asignándolas a una variable. Así quedaría:
*A menos que pasemos el valor por referencia usando un & antes de la variable, en la declaración de la función. Ej: function suma(&\$sumando1, &\$sumando2) { [definición de la función] }
-->