Alcance de las variables de PHP
Alcance de las variables de PHP
En PHP, las variables se pueden declarar en cualquier parte del script.
El alcance de una variable es la parte del script donde se puede hacer referencia/utilizar la variable.
PHP tiene tres ámbitos variables diferentes:
- local
- global
- estático
Alcance Global y Local
Una variable declarada fuera de una función tiene un ALCANCE GLOBAL y solo se puede acceder fuera de una función:
Ejemplo
Variable con alcance global:
<?php
$x = 5; // global scope
function myTest() {
// using x inside this function will generate an error
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
echo "<p>Variable x outside function is: $x</p>";
?>
Una variable declarada dentro de una función tiene un ÁMBITO LOCAL y solo se puede acceder dentro de esa función:
Ejemplo
Variable con alcance local:
<?php
function myTest() {
$x = 5; // local scope
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
// using x outside the function will generate an error
echo "<p>Variable x outside function is: $x</p>";
?>
Puede tener variables locales con el mismo nombre en diferentes funciones, porque las variables locales solo son reconocidas por la función en la que se declaran.
PHP La palabra clave global
La global
palabra clave se utiliza para acceder a una variable global desde dentro de una función.
Para hacer esto, use la global
palabra clave antes de las variables (dentro de la función):
Ejemplo
<?php
$x = 5;
$y = 10;
function myTest()
{
global $x, $y;
$y = $x + $y;
}
myTest();
echo $y; // outputs 15
?>
PHP también almacena todas las variables globales en una matriz llamada
. contiene el nombre de la variable. También se puede acceder a esta matriz desde dentro de las funciones y se puede usar para actualizar variables globales directamente.$GLOBALS[index]
index
El ejemplo anterior se puede reescribir así:
Ejemplo
<?php
$x = 5;
$y = 10;
function myTest()
{
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
myTest();
echo $y; // outputs 15
?>
PHP La palabra clave estática
Normalmente, cuando se completa/ejecuta una función, se eliminan todas sus variables. Sin embargo, a veces queremos que NO se elimine una variable local. Lo necesitamos para otro trabajo.
Para hacer esto, use la static
palabra clave cuando declare la variable por primera vez:
Ejemplo
<?php
function myTest()
{
static $x = 0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
Entonces, cada vez que se llame a la función, esa variable aún tendrá la información que contenía desde la última vez que se llamó a la función.
Nota: La variable sigue siendo local para la función.