Yo preferí hacer un metodo static para acceder a el en todo momento
Código PHP:
Ver original/**
* @tutorial Metodo que organiza un array de AbsEnumerado en un select de html
*
* @author miguel.carmona 2011/12/20
*
* @param $nombre
* @param $valorInicial
* @param $datos
* @param $id
*/
public static function getComboGenerico($nombre,$valorInicial,$datos,$id=NULL,$class='cajas',$otros=NULL,$opcionDefecto=TRUE,$palabraDefecto='TODOS') {
$resultado = '<select name="'.$nombre.'" id="'.(self::getVacio($id) ? $nombre : $id).'" class="'.$class.'" '.$otros.'>';
if($opcionDefecto) {
$resultado .= '<option value="">'.$palabraDefecto.'</option>';
}
foreach ($datos as $dato) {
if($dato instanceof AbsEnumerado) {
$resultado .= '<option value="'.$dato->getId().'" '.($valorInicial==$dato->getId() ? 'selected="selected"' : '').'>'.$dato->getDescripcion().'</option>';
}
}
$resultado .= '</select>';
return $resultado;
}
La clase AbsEnumerado es:
Código PHP:
Ver originalabstract class AbsEnumerado {
protected $id = NULL;
protected $descripcion = NULL;
public function __construct($id,$descripcion) {
$this->id = $id;
$this->descripcion = $descripcion;
}
public function getId() {
return $this->id;
}
public function setId($id) {
$this->id = $id;
}
public function getDescripcion() {
return $this->descripcion;
}
public function setDescripcion($descripcion) {
$this->descripcion = $descripcion;
}
}
a partir de ahi se crean las clases para hacerlo mas practico
Clase enumerado:
Código PHP:
Ver originalrequire_once ('IntEnumerado.php');
require_once ('AbsEnumerado.php');
class ESexo extends AbsEnumerado implements IntEnumerado {
private static $datos;
const MASCULINO = 'N_1';
const FEMENINO = 'N_2';
public static function getValores() {
self::$datos[self::MASCULINO] = new ESexo('1','Masculino');
self::$datos[self::FEMENINO] = new ESexo('2','Femenino');
}
public static function getIndice($buscar) {
self::getValores();
return self::$datos[$buscar];
}
/**
* @tutorial Metodo busca un valor en el vector para tipo de ingreso del estudiante
*
* @author miguel.carmona
*
* @param $buscar
*/
public static function getResultado($buscar) {
self::getValores();
$resultado = new ESexo('-1','');
foreach (self::$datos as $dato) {
if($dato->getId()==$buscar) {
$resultado = $dato;
}
}
return $resultado;
}
public static function getDatos() {
self::getValores();
return self::$datos;
}
}
interface IntEnumerado
Código PHP:
Ver originalinterface IntEnumerado {
public static function getValores();
public static function getResultado($buscar);
public static function getDatos();
public static function getIndice($buscar);
}