jueves, 3 de mayo de 2012
Alcance de las variables
Hace referencia a la parte del programa, desde el cual puede accederse a una variable.
El ámbito de aplicación de una variable es el espacio del programa donde existe.
En PHP hay 3 tipos de alcance de una variable: local, global y estático.
Variable locales son aquellas que son visibles dentro de una función.
Las variables globales son visibles para el script completo, pero sin embargo, normalmente no son visibles para las funciones.
Las variables estáticasson locales en una función, pero retienen su valor de una llamada de función a otra. Las variables estáticas desaparecen al terminar el script.
Por defecto, todas las variables que se declaran en una función, son locales.
Ejemplo:
<html>
<head>
<title>Alcance de una variables</title>
</head>
<body bgcolor="#eceaf3">
<font face = "verdana" size='+1'>
<pre>
<?php
//definicion de variable global
$var="Pedro";
function lugar()
{
//definicion de variable local
$var="Jose";
print"\$var, variable local de la funcion: $var<br/>";
}
//llamada de la función
lugar();
print"LLamado de la variable \$var fuera de la funcion: $var .";
?>
</pre>
</font>
</body>
</html>
Dentro de una función, no se puede acceder a las variables declaradas fuera de la misma, amenos que se pase una referencia de la variable externa a la función. PHP dispone de la sentencia "global" para acceder a ella en la función.
Ejemplo:
<head>
<title>Alcance de una variables</title>
</head>
<body bgcolor="#eceaf3">
<font face = "verdana" size='+1'>
<pre>
<?php
function venta()
{
global $margen;
//10% de margen
$margen*=1.1;
}
$margen=190000;
venta();
print"$margen";
?>
</pre>
</font>
</body>
</html>
Una forma de acceder a variables (en una función) declaradas fuera de la función es con la sentencia "$GLOBALS".
Ejemplo:
<html>
<head>
<title>Alcance de una variables $GLOBALS</title>
</head>
<body bgcolor="#eceaf3">
<font face = "verdana" size='+1'>
<pre>
<?php
function venta()
{
$GLOBALS['margen']*=1.1;
}
$margen=1500;
venta();
print"$margen";
?>
</pre>
</font>
</body>
</html>
Las variables estáticas, no son visibles fuera de la función. No obstante, estas no se eliminan, cuando la función acaba. Al inicializar una variable estática, esta mantiene su valor aún durante la llamada a otras funciones.
Ejemplo.
<html>
<head>
<title>Alcance de una variables estáticas</title>
</head>
<body bgcolor="#eceaf3">
<font face = "verdana" size='+1'>
<pre>
<?php
function visitas()
{
static $contar=0;
$contar++;
echo"Has estado aqui $contar veces.\n<br/>";
}
visitas();
visitas();
visitas();
visitas();
visitas();
?>
</pre>
</font>
</body>
</html>
Otro ejemplo con variable estática:
<html>
<head>
<title>Alcance de una variables estáticas</title>
</head>
<body bgcolor="#eceaf3">
<font face = "verdana" size='+1'>
<pre>
<?php
function incremento($tam){
static $total=0; // The value of $total will persist
// between calls
$vol= $tam++ ;
$total += $vol; // Keep a running total
?>
<font size='<?=+$vol?>'>mas grande<br>
<?php
if ($total > 10){
print "$total veces mas grande.<br>";
exit;
}
} // end function definition
for ($n=0; $n<=10; $n++){
incremento($n);
}
?>
</pre>
</font>
</body>
</html>
Funciones anidadas son funciones contenidas dentro de otras.
La función externa, se denomina padre y es la que invoca a la funciona anidada.
Ejemplo:
<html>
<head>
<title>Función anidada</title>
</head>
<body bgcolor="#eceaf3">
<font face = "verdana" size='+1'>
<pre>
<?php
function externa($a,$b)
{
print "Se crea la función externa()\n<br>";
function cuadrado($x)
{
// funcion anidada
print "Se crea la funcion cuadrado()\n<br>";
return $x*$x;
}
return cuadrado($a)+cuadrado($b);
}
// llamar a externa()
$sum=externa(5,8);
echo "La suma de los cuadrados de 5 y 8 es $sum.\n<br";
$squared=cuadrado(5);
print"El cuadrado de 5 es $squared.\n<br>";
?>
</pre>
</font>
</body>
</html>
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario