Buenas de nuevo, hoy os traigo algo un poquito diferente a lo que hemos posteado anteriormente, hoy traemos una clase que nos va a permitir disfrutar de variables "globales" en nuestros sistemas, sin hacer uso del superarray
$_GLOBALS
ni de declarar las variables como
global
<?php
class Globals
{
/**
* Array De Datos
*
* @var array
* @access private
* @property static
*
*/
private static $data = NULL;
/**
* Constructor
*
* @param void
* @access private
* @return void
*
*/
private function __construct() {}
/**
* Setter
*
* @param string
* @param string
* @access public
* @return mixed
*
*/
public static function set($name, $value)
{
return self::$data[$name] = $value;
}
/**
* Getter
*
* @param string
* @access public
* @return mixed
*
*/
public static function get($name)
{
return (isset(self::$data[$name])) ? self::$data[$name] : FALSE;
}
/**
* Setter Sum
*
* @param string
* @param string
* @access public
* @return mixed
*
*/
public static function sum($name, $value)
{
if(!is_numeric($value)) return FALSE;
return (!isset(self::$data[$name])) ? self::set($name, $value) : self::$data[$name] += $value;
}
}
?>
Su uso es muy sencillo:
1 Incluimos la clase en nuestro código
2 Creamos una variable de acceso global:
-
Globals::Set('year', 2014); -
En donde queramos recuperarla, incluimos de nuevo la clase y la recuperamos tal que asi:
Globals::Get('year');, si la variable ha sido declarada nos devolverá su valor, si no, nos devolveráFALSE.
3 Método accesorio:
Sum()
-
Lo vamos a utilizar para sumar variables numéricas a variables ya declaradas, por ejemplo
Globals::Sum('year', 10);, si la variable no hubiera sido declarada, la declararía en ese momento, es decir, lo podemos utilizar para crear nuevas variables "globales". PD: Si queremos restar, añadimos un valor negativoGlobals::Sum('year', -10);
¿Cómo funciona?
La clase hace uso de un array declarado dentro de ella que guardará los valores que le pasemos, y los mantendrá en memoria al ser el array declarado como estático
static
, por lo que podremos acceder a ellos tras declararlos al hacer uso de la misma clase que quedará en memoria.
Comentar también, como veréis que el constructor de la clase está declarado como privado, para que no podamos instanciarla y siempre utilicemos la misma copia.
Espero a alguno os sea de utilidad!
Un saludo!!!!!