Blog de programación, errores, soluciones

Chose Language:
Author: Admin/Publisher |finished | checked

PHP global – alcance o ámbito de las variables

En PHP la mayoría de las variables está en un ámbito simple, por ejemplo:

Ambito simple
<?php
   $variable = "hola mundo";
   include "archivo.php";
?>

La variable $variable estará disponible incluso en archivo.php, excepto en las funciones, dentro de una función las variables son locales.

Todas las variables dentro de una función tendrán alcance local, con una excepción y es que si la variable pasada en parámetro está pasada por referencia, esta cambiará su valor fuera de la función.

Como vimos en el apartado de funciones en PHP podemos pasar por parámetro la variable y así interactuar con ella.

El uso de use

También desde PHP 7 podemos usar use en la función lo cual nos permite usar una variable de ámbito padre en las funciones anónimas.

funcion anonima utilizando use
<?php

$message ="mort dijo: Hola tu";
$example = function () use ($message): string {
    return $message;
};

echo $example();

vea que en echo estamos utilizando $example() use en vez de $example esto se debe que, $example es un objeto de tipo closure no el resultado de la función anonima.

La palabra global y $_GLOBAL

Dentro de una función nombrada podemos usar la palabra clave global, y asi acceder a la variable global.

Tenga en cuanta que aunque global nos permite usar una variable global y cambiarla pasarla por referencia, también lo hace. Además las variables pasadas por referencia nos da un indicio de lo que estamos utilizando.

ejemplo usando global
<?php
function cambioDeTexto(){
   global $a;
   $a = "Bienvenido";
}

$a = "hello word";
echo "<p>$a</p>";
cambioDeTexto();
echo "<p>$a</p>";
hello word

Bienvenido

Si ejecuta el siguiente código y se fija el valor de la variable $a ya no será "hello word" será "Bienvenido"⁣, ya que estamos interactuando con la variable $a del ámbito padre.

A en este caso es una variable global.

Si hacemos un echo o un print de $GLOBALS["a"] veremos que la variable $a está en las variables globales.

Ahora usted estará pensando si declaro $a o cualquier otra variable en el ámbito simple es global?. Simplemente le diré probémoslo.

es una variable de ambito simple global?
<?php
$a = "hola";
echo $GLOBALS["a"];
hola
Category: php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category