<?php

class SesionCliente {

    static function abrir() {
        $status = session_status();
        switch ($status) {
            case PHP_SESSION_NONE:
error_reporting(0);
// ini_set('display_errors', TRUE);
// ini_set('display_startup_errors', TRUE);
                session_start();
 error_reporting(E_ALL);
// ini_set('display_errors', TRUE);
// ini_set('display_startup_errors', TRUE);
                break;
            case PHP_SESSION_ACTIVE:
                return true;
                break;
        }
    }

    static function cerrar() {
        session_write_close();
    }
    
    static function activa(){
        return self::valor(SESION);
    }
    
    static function dato($variable){
        $valor = false;
        $SesionActiva = self::valor(SESION);
        if (property_exists( $SesionActiva, $variable)) {
            $valor = $SesionActiva->$variable;
        }
        return $valor;
    }

    static public function valor($nombre, $valor = null) {
        if (!is_null($valor)) {
            self::abrir();
            $_SESSION [$nombre] = $valor;
            self::cerrar();
        } else {
            if (isset($_SESSION [$nombre])) {
                self::abrir();
                $valor = $_SESSION [$nombre];
                self::cerrar();
                return $valor;
            } else {
                return false;
            }
        }
        
    }

    static public function eliminar($nombre) {
        self::abrir();
        unset($_SESSION [$nombre]);
        self::abrir();
    }

    static public function destruir() {
        self::abrir();
        $_SESSION = array();
        session_destroy();
        self::cerrar();
    }

}

