Traductor

Ámbito de las Variables en PHP

Cuando una variable se crea dentro del cuerpo de una función, solo existe dentro de esa función, no en el cuerpo principal del programa.
Veamos el siguiente script:
<?php
                function cuadrado($numero){
                               $cuadrado=$numero*$numero;
                               echo ("El cuadrado de $numero es $cuadrado.<br>");
                }
                $numero=3;
                cuadrado($numero);
                echo ("La variable \$numero vale $numero y es de tipo ".gettype ($numero)."<br>");
                echo ("La variable \$cuadrado vale $cuadrado y es de tipo ".gettype ($cuadrado)."<br>");

?>
Lo que verá en el navegador será:
Lo que interesa es lo siguiente:
  • Dentro de la función se ha declarado la variable $cuadrado. Esta variable almacena un resultado que se muestra mediante la instrucción echo() que forma parte del cuerpo de la función.
  • Cuando se termina la ejecución de la función se continúa con el script.
  • Vemos que hay una linea destinada a mostrar el valor de $cuadrado y su tipo, y no nos muestra nada, y como tipo nos muestra NULL. Es decir la variable no existe, y sin embargo ha sido declarada y utilizada dentro del cuerpo de la función que acaba de ejecutarse.
  • Lo que vemos es que una variable que ha sido declarada dentro de una función no existe fuera de la misma.
De aquí parten dos términos:
  • Variable Local
    • Es de ámbito privado, y solo sirve para la función que la contiene
  • Variable Global
    • Declarada en el cuerpo principal de script.
    • Está disponible para todo el script.
Veamos el siguiente script:
<?php
function cuadrado($valor){
$cuadrado=$valor*$valor;
echo ("El cuadrado de $valor es $cuadrado.<br>");
echo ("La variable \$numero dentro de la función vale $numero y es de tipo ".gettype ($numero)."<br>");
}
$numero=3;
cuadrado($numero);
echo ("La variable \$numero fuera de la función vale $numero y es de tipo ".gettype ($numero)."<br>");
echo ("La variable \$cuadrado fuera de la función vale $cuadrado y es de tipo ".gettype ($cuadrado)."<br>");
?>
Lo que verá en el navegador será:
Como puede ver la variable creada en el cuerpo de script no es visible desde dentro de la función. Por eso es que cuando necesitamos pasar datos del script a las funciones usamos los argumentos y cuando necesitamos pasar un resultado desde la función al cuerpo del script, usamos la función return.
Si queremos usar una variable global dentro del cuero de una función, la declaramos con la sentencia global dentro de la función. De este modo el interprete "sabe" que esta variable también está disponible dentro de la función.
Veamos el siguiente script: 
<?php
function cuadrado($valor){
global $numero;
$cuadrado=$valor*$valor;
echo ("El cuadrado de $valor es $cuadrado.<br>");
echo ("La variable \$numero dentro de la función vale $numero y es de tipo ".gettype ($numero)."<br>");
}
$numero=3;
cuadrado($numero);
echo ("La variable \$numero fuera de la función vale $numero y es de tipo ".gettype ($numero)."<br>");
echo ("La variable \$cuadrado fuera de la función vale $cuadrado y es de tipo ".gettype ($cuadrado)."<br>");
?>
Lo que veremos en el navegador será:
Como ve la variable $numero ha sido declarada como Global dentro del cuerpo de la función.
Esto permite que esté disponible tanto para la función como para el resto del script.
Cuando una variable es de ámbito global, puede ser llamada mediante una matriz específica de PHP.
Se trata de $GLOBALS 
  • Esta matriz es propia del interprete, es decir, no es necesario declararla, y almacena todas las variables globales que se usan en el script.
  • Cada vez que usted ejecuta un script esta matriz se crea automáticamente.
  • Se trata de una matriz asociativa en la que se crea un elemento por cada variable global que usa el script
  • El índice de cada elemento es el nombre de la variable y el contenido es el valor de esa variable. 
Usted usted puede usar esta matriz como se muestra en el siguiente script:
<?php
                function cuadrado($valor){
                               $cuadrado=$valor*$valor;
                               echo ("El cuadrado de $valor es $cuadrado.<br>");
                               echo ("La variable \$numero dentro de la función vale ".$GLOBALS ["numero"]." y es de tipo ".gettype ($GLOBALS ["numero"])."<br>");
                }
                $numero=3;
                cuadrado($numero);
                echo ("La variable \$numero fuera de la función vale $numero y es de tipo ".gettype ($numero)."<br>");
                echo ("La variable \$cuadrado fuera de la función vale $cuadrado y es de tipo ".gettype ($cuadrado)."<br>");
?>
Observe en la linea resaltada cómo hemos usado la matriz $GLOBALES

Temas referentes a la Definición de Funciones

Recuerden Comentar Compartir y Darle 
Hasta la Próxima

Si te hemos ayudado : )
Te agradeceríamos que apoyaras este proyecto

0 comentarios:

Publicar un comentario