Variables
en funciones, locales, estáticas, globales
Variables
en funciones
Variables
locales
Para
definir una variable local, simplemente se asigna un valor a la
variable:
function
Iva($fValue) {
//
$fIVA es una variable local
$fIVA = $fValue * 0.16;
Echo("El IVA de $fValue es $fIVA<BR>");
}
Iva(2350);
Variables
estáticas
Si
queremos que la variable local conserve el valor de invocación
a invocación de la función, basta declararla como
estática:
<!--
Funcion2.php -->
function
Counter() {
static $count = 0;
$count2 = 0;
$count2++;
Echo("Count vale $count y count2 vale $count2<BR>");
$count++;
}
Counter();
Counter();
Counter();
muestra
en la página:
Count
vale 0 y count2 vale 1
Count
vale 1 y count2 vale 1
Count
vale 2 y count2 vale 1
La
inicialización de la variable sólo tiene lugar la
primera vez que se invoca Counter.
Acceso
a variables globales
Este
es uno de los puntos en los que PHP se diferencia de C y es un
punto importante y causa de bastantes quebraderos de cabeza para
el primerizo en PHP.
Para
acceder a una variable global desde dentro de una función
es imprescindible declararla dentro de la función
como global
$variable,
ya que de otro modo PHP pensará que se desea hacer referencia
a una variable local:
<!--
Funcion3.php -->
function
TouchGlobal() {
global $strCadena;
$strCadena
= "¡Tocada!";
$nValue = 7;
Echo("Dentro de TouchGlobal ahora \$strCadena vale "
.
$strCadena " . "y \$nValue vale $nValue<BR>");
}
$strCadena
= "Hola mundo";
$nValue
= 4;
Echo("\$strCadena
vale $strCadena y \$nValue vale $nValue<BR>");
TouchGlobal();
Echo("\$strCadena
ahora vale $strCadena y \$nValue sigue ".
"valiendo $nValue<BR>");
Como
se ve, no es necesario que la variable global esté en el
fichero físicamente
delante de la función, basta con que haya sido inicializada
antes de llamar a la función. Los cambios realizados a
una variable global dentro de una función, permanecen cuando
se vuelve de la función.
Otra
forma de acceder a las variables globales es mediante una indexación
asociativa del array $GLOBALS.
<<<Anterior
- Siguiente>>>
|