2 ambito variables
Aquí tienes una lista de 20 ejercicios sobre el ámbito de las variables en PHP, junto con sus soluciones y el nombre sugerido para cada archivo, en formato Markdown:
# Ejercicios sobre el Ámbito de las Variables en PHP
## Ejercicio 1: Ámbito Global
**Nombre del fichero**: `ambito_global.php`
**Descripción**: Declara una variable global y accede a ella dentro de una función utilizando la palabra clave `global`.
```php
<?php
$mensaje = "Hola Mundo";
function saludar() {
global $mensaje;
echo $mensaje;
}
saludar();
?>
Ejercicio 2: Ámbito Local
Nombre del fichero: ambito_local.php
Descripción: Declara una variable dentro de una función y accede a ella dentro de esa función.
<?php
function suma() {
$a = 5;
$b = 10;
echo $a + $b;
}
suma();
?>
Ejercicio 3: Ámbito de una Variable Global sin global
Nombre del fichero: ambito_global_sin_global.php
Descripción: Intenta acceder a una variable global dentro de una función sin usar global
y observa el resultado.
<?php
$numero = 100;
function mostrarNumero() {
echo $numero; // Error: variable no definida en el ámbito local
}
mostrarNumero();
?>
Ejercicio 4: Uso de $GLOBALS
Nombre del fichero: uso_globals.php
Descripción: Accede a una variable global dentro de una función utilizando $GLOBALS
.
<?php
$nombre = "Carlos";
function mostrarNombre() {
echo $GLOBALS['nombre'];
}
mostrarNombre();
?>
Ejercicio 5: Ámbito de Variables Estáticas
Nombre del fichero: ambito_estatico.php
Descripción: Usa una variable estática dentro de una función para mantener su valor entre llamadas.
<?php
function contador() {
static $count = 0;
$count++;
echo $count;
}
contador();
contador();
contador();
?>
Ejercicio 6: Ámbito Global vs Local
Nombre del fichero: global_vs_local.php
Descripción: Declara una variable global y otra con el mismo nombre en el ámbito local de una función. Observa la diferencia.
<?php
$numero = 20;
function cambiarNumero() {
$numero = 10;
echo "Valor local: " . $numero . "\n";
}
cambiarNumero();
echo "Valor global: " . $numero;
?>
Ejercicio 7: Ámbito con Variables de Parámetros
Nombre del fichero: ambito_parametros.php
Descripción: Pasa una variable como parámetro a una función y modifica su valor dentro de la función.
<?php
function incrementar($numero) {
$numero += 5;
echo $numero;
}
$valor = 10;
incrementar($valor);
echo $valor; // $valor no se modifica fuera de la función
?>
Ejercicio 8: Ámbito de Variables Superglobales
Nombre del fichero: ambito_superglobales.php
Descripción: Accede a una variable superglobal como $_POST
dentro y fuera de una función.
<?php
$_POST['dato'] = "Ejemplo";
function mostrarDato() {
echo $_POST['dato'];
}
mostrarDato();
?>
Ejercicio 9: Variables Estáticas y Ciclos
Nombre del fichero: estaticas_ciclos.php
Descripción: Usa una variable estática en un ciclo dentro de una función y observa cómo se mantiene su valor.
<?php
function contar() {
static $contador = 0;
$contador++;
echo $contador . "\n";
}
for ($i = 0; $i < 5; $i++) {
contar();
}
?>
Ejercicio 10: Referencia a Variables Globales
Nombre del fichero: referencia_global.php
Descripción: Modifica una variable global dentro de una función usando referencia.
<?php
$numero = 50;
function modificarNumero(&$num) {
$num += 10;
}
modificarNumero($numero);
echo $numero; // Se mostrará 60
?>
Ejercicio 11: Uso de global
en funciones anidadas
Nombre del fichero: global_funciones_anidadas.php
Descripción: Usa global
para acceder a variables globales en funciones anidadas.
<?php
$mensaje = "Hola";
function saludar() {
global $mensaje;
function despedir() {
global $mensaje;
echo $mensaje . " y adiós";
}
despedir();
}
saludar();
?>
Ejercicio 12: Variables Locales y Funciones Anidadas
Nombre del fichero: local_funciones_anidadas.php
Descripción: Declara una variable local en una función y trata de acceder a ella desde una función anidada.
<?php
function padre() {
$mensaje = "Hola Mundo";
function hijo() {
echo $mensaje; // Error: variable no definida
}
hijo();
}
padre();
?>
Ejercicio 13: Variables Estáticas y Recursividad
Nombre del fichero: estaticas_recursividad.php
Descripción: Usa una variable estática en una función recursiva.
<?php
function factorial($n) {
static $resultados = array();
if ($n === 0) {
return 1;
}
if (!isset($resultados[$n])) {
$resultados[$n] = $n * factorial($n - 1);
}
return $resultados[$n];
}
echo factorial(5);
?>
Ejercicio 14: Referencia y Ámbito Global
Nombre del fichero: referencia_ambito_global.php
Descripción: Usa una referencia para modificar una variable global dentro de una función sin usar global
.
<?php
$texto = "Original";
function cambiarTexto(&$txt) {
$txt = "Modificado";
}
cambiarTexto($texto);
echo $texto; // Se mostrará "Modificado"
?>
Ejercicio 15: Ámbito de Variables en un Archivo Includo
Nombre del fichero: ambito_include.php
Descripción: Crea un archivo que incluya otro PHP y accede a una variable definida en el archivo principal desde el archivo incluído.
// archivo principal: principal.php
<?php
$nombre = "Carlos";
include 'incluido.php';
?>
// archivo incluido: incluido.php
<?php
echo "Hola, " . $nombre;
?>
Ejercicio 16: Variables Globales y Funciones Lambda
Nombre del fichero: global_lambda.php
Descripción: Accede a una variable global desde una función lambda (función anónima).
<?php
$mensaje = "Hola Mundo";
$saludar = function() use ($mensaje) {
echo $mensaje;
};
$saludar();
?>
Ejercicio 17: Variables Locales en Funciones Lambda
Nombre del fichero: local_lambda.php
Descripción: Modifica una variable local dentro de una función lambda.
<?php
$contador = 0;
$incrementar = function() use (&$contador) {
$contador++;
};
$incrementar();
$incrementar();
echo $contador; // Se mostrará 2
?>
Ejercicio 18: Variables en el Ámbito de Clase
Nombre del fichero: ambito_clase.php
Descripción: Declara una variable en el ámbito de una clase y accede a ella desde un método.
<?php
class Persona {
private $nombre = "Ana";
public function mostrarNombre() {
echo $this->nombre;
}
}
$persona = new Persona();
$persona->mostrarNombre();
?>
Ejercicio 19: Ámbito Global en Métodos de Clase
Nombre del fichero: global_metodos_clase.php
Descripción: Accede a una variable global dentro de un método de una clase.
<?php
$ciudad = "Madrid";
class Lugar {
public function mostrarCiudad() {
global $ciudad;
echo $ciudad;
}
}
$lugar = new Lugar();
$lugar->mostrarCiudad();
?>
Ejercicio 20: Variables Estáticas en Métodos de Clase
Nombre del fichero: estaticas_metodos_clase.php
Descripción: Usa una variable estática dentro de un método de una clase.
<?php
class Contador {
public function incrementar() {
static $count = 0;
$count++;
echo $count . "\n";
}
}
$contador1 = new Contador();
$contador2 = new Contador();
$contador1->incrementar();
$contador2->incrementar();
$contador1->incrementar();
?>
Estos ejercicios cubren los conceptos fundamentales del ámbito de las variables en PHP, incluyendo variables globales, locales, estáticas, y su comportamiento en diferentes contextos como funciones anidadas,
clases, y funciones lambda.