Ámbito de variables en PHP

Trabajando en un proyecto que no emplea  ningún framework de PHP y mas bien trabaja por la obra y gracia del espíritu santo ( ya que no sigue patrón alguno, convención o regla), surgió la necesidad de hacerle un cambio. Entonces ya que todo el sistema esta desarrollado prácticamente con scripts  se me ocurrió hacer la primer función dentro de dicho sistema; De ahí surge el porque de esta entrada.  

Al crear dicha función  erróneamente intente hacer uso de una variable declara fuera de ella y el resultado fue un mensaje de error de variable no definida... Entonces ¿Cómo se maneja en PHP el ámbito de las variables?

Según la documentación oficial de PHP,  al declarar una variable  esta se declara con un ámbito simple el cual es accesible por archivos incluidos (include) y requeridos (require) entonces...



 $var = 5;
 include('otro_archivo.php');

Dicho lo anterior la variable $var podrá ser accedida desde el archivo otro_archivo.php siempre y cuando no se intente acceder a ella desde una función, para este caso aplica el siguiente criterio. Desde las funciones que uno como usuario define, las variables que ahí se encuentran obtienen un ámbito local  por lo que al intentar usar una variable declarada fuera de la función  dentro de ella producirá una salida no deseada...



 $mi_var = 'Hola';

 function saluda(){
   echo $mi_var;
 }
saluda();
//Este script producirá una salida no desada

Para solventar este tema PHP  brinda la palabra reservada global  con la cual se debe declarar una variable como  global antes de hacer uso de ella, si es que la variable esta declarada fuera de la función y se desea usar dentro de la función. 



 $saludo = 'Hola ';
 $alguien = ' Juan';

 function saluda(){
   global $saluda, $alguien;
   echo $saluda.$alguien;
 }
 saluda();
//Este script imprimara las variables concatenadas 

Otra forma de solventar  esta cuestión es mediante el array $GLOBALS  el cuál es un array asociativo mediante el cuál se accede a las variables globales usando como clave el nombre de la variable



 $saludo = 'Hola ';
 $alguien = ' Juan';

 function saluda(){
   echo $GLOBALS['saludo'].$GLOBALS['alguien'];
 }
 saluda();
//otra forma de acceder a variables declaradas  fuera de una función

El tema del ámbito de variables es extenso, hasta aquí solo se ha visto una mínima parte,  para profundizar  mas es buena idea revisar la documentación oficial aquí.