A menudo en un mismo controlador o en varios se debe utilizar una misma variable. Para esto declararemos una variable global, que podrá ser referenciada desde cualquier método de un controlador, o grupo de controladores en el caso de utilizar herencia.
Ejemplo 1, variable global con el nombre del usuario
Vamos a ver un sencillo ejemplo de variable global en un controlador de CakePHP. Vamos a crear una variable que almacene el nombre de una persona, y lo utilizaremos en dos métodos diferentes del mismo controlador:
01 public class MyController{02 var $nombreGlobal = "David";03 04 public function saludar(){05 return "Hola ".$this->nombreGlobal; // Devolverá 'Hola David'06 }
07 08 public function despedir(){09 return "Adios ".$this->nombreGlobal; // Devolverá 'Adios David'10 }
11 }
En este ejemplo vemos que se utiliza la misma variable en los dos métodos que tiene el controlador.
Ejemplo 2, variable global con un contador
PHP |copy code |?
01 class MyController {02 03 var $contador = 0;04 05 public function inciar(){06 while($this->contador < 10){07 $this->contador++;08 }
09 finalizar();10 }
11 12 public function finalizar(){13 return "Contador acabado en :".$this->contador; // Devolverá 'Contador acabado en : 10'14 }
15 }
En este ejemplo tenemos un variable global que será incrementada en un método hasta llegar a un límite. Cuando se alcanza el límite, se llama a otro método que mostrará el valor con el que se ha detenido.
Ejemplo 3, variables globales utilzando herencia
En el caso de querer compartir una variable entre varios controladores, lo que se debe hacer es tener un controlador ‘Padre’ del que van a heredar todos los que necesiten dicha variable.
Creamos el controlador ‘padre’ con la variable global
El controlador ‘padre’ tiene la variable que será usada por el resto de controladores que hereden de él:
1 class AppController {2 var $nombreGlobal = "Developando";3 }
Controladores heredados
Controladores que van a acceder a la variable global definida.
3.1 – Primer controlador
1 class SaludarController extends AppController {2 public function saludar(){3 return "Hola ".$this->nombreGlobal; // Devolverá 'Hola Developando'4 }
5 }
3.2 – Segundo controlador
1 class SaludarController extends AppController {2 public function despedir(){3 return "Adios ".$this->nombreGlobal; // Devolverá 'Adios Developando'4 }
5 }
En este ejemplo vemos que en un controlador se ha definido una variable global llamada ‘nombreGlobal‘ que es utilizada por dos controladores. Para conseguir esto únicamente hemos tenido que añadir ‘extends AppController‘ en los controladores hijos y así emplear la herencia de CakePHP, y por tanto, poder acceder a dicha variable.
Estos serían un ejemplos sencillos para ver el uso de una variable global dentro de un controlador en CakePHP.
Deja tu comentario