Implementacion de SessionNamespace

Aqui les dejo la implementacion que desarrolle para SessionNamespace:

Tuve que modificar la clase Session agregando un metodo "is_set".


./forms/session/main.php
/**

 * Modelo orientado a objetos para el acceso a datos en Sesiones

 *

 */

class Session {



	/**

	 * Crear ó especificar el valor para un indice de la sesión

	 * actual

	 *

	 * @param string $index

	 * @param mixed $value

	 */

	static function set_data($index, $value){

	  	$_SESSION['session_data'][$index] = $value;  	  	

	}



	/**

	 * Obtener el valor para un indice de la sesión

	 *

	 * @param string $index

	 * @return mixed

	 */

	static function get_data($index){

	  	return $_SESSION['session_data'][$index];   

	}



	/**

	 * Unset una variable de indice 

	 *

	 */

	static function unset_data(){

	  	$lista_args = func_get_args();

	  	if($lista_args){

  	  		foreach($lista_args as $arg){

			  	unset($_SESSION['session_data'][$arg]);

			}

		}

	}
	
	/**
	 * Verifica si existe el indice de la sesión
	 *
	 * @param string $index
	 * @return mixed
	 */
	static function is_set($index){
	  	return isset($_SESSION['session_data'][$index]);   
	}
	

}



/**
 * Modelo orientado a objetos para el acceso a datos en Sesiones a través de espacios con nombres
 * 
 */
class SessionNamespace
{

	/**
	 * Añade un namespace
	 *
	 * @param string $namespace nombre del espacio
	 * @param string $property nombre de la propiedad
	 * @param mixed $value valor
	 */
	static public function add($namespace, $property, $value)
	{
		if(!Session::is_set($namespace))
		{
			Session::set_data($namespace, new StdClass());
		}
		
		$obj_namespace = Session::get_data($namespace);
		$obj_namespace->$property = $value;
	}
	
	/**
	 * Obtiene los atributos de un namespace
	 *
	 * @param string $namespace nombre del espacio
	 * @return object
	 */
	static public function get($namespace)
	{
		return SessionNamespace::exists($namespace) ? Session::get_data($namespace) : null;
	}

	/**
	 * Verifica si existe el namespace
	 *
	 * @param string $namespace nombre del espacio
	 * @return mixed
	 */
	static public function exists($namespace)
	{
		return Session::is_set($namespace);
	}
	
	/**
	 * Reinicia el namespace
	 *
	 * @param string $namespace namspace a reiniciar
	 */	
	static public function reset($namespace)
	{
		Session::set_data($namespace, new StdClass());
	}
}


Intente seguir todos los convenios planteados, y desarrolle la implementacion en funcion de lo que entendi del trac, cualquier cosa me avisan.

Espero respuesta para subirlo al SVN.

Andrés tienes razón, es necesario trabajar <!-- s:wink: --><img src="{SMILIES_PATH}/icon_wink.gif" alt=":wink:" title="Wink" /><!-- s:wink: -->

Saludos

Comentarios

  • Perfecto, voy a revisarlo para agregarlo al SVN. Ya estoy trabajando en la estructura para 0.5 la semana que viene la publico en el trac.

    Saludos
  • edited 4:18
    Ok, cualquier cosa me dices y lo subo sin problema alguno.

    Saludos.
Sign In or Register to comment.