Anuncios

Bienvenidos sean a este post, hoy crearemos los archivos dentro del directorio Helpers.

Anuncios

Nuestro primer caso sera el archivo Url.php, una vez creado dentro del directorio Helpers en el directorio app le agregaremo el siguiente codigo:

Url.php

<?php

namespace App\Helpers;

class Url
{
        public static function redireccionar($path = '/')
        {
                header('Location: ' .$path);
                exit();
        }
}
Anuncios

Como siempre primero definimos el namespace de nuestra clase, luego definiremos la clase en si y le agregaremos un metodo llamado redireccionar que recibira un argumento pero sera opcional gracias al valor predeterminado, esta nos enviara al archivo que informemos como argumento por medio de la funcion header, nuestro siguiente paso sera crear un archivo llamado Sesion.php dentro del directorio Helpers:

Sesion.php

<?php

namespace App\Helpers;

class Sesion
{

}
Anuncios

Esta es la base de nuestra clase, primero definimos el namespace y luego la clase, nuestro siguiente paso sera agregar la siguiente variable dentro de la clase:

private static $sesionIniciada = false;
Anuncios

Esta variable nos permitira saber si la sesion fue iniciada o no, al ser privada solo podra ser modiificada dentro de la clase, y su estado inicial sera false, nuestro siguiente paso sera agregar el siguiente metodo:

        public static function iniciar()
        {
                if (self::$sesionIniciada == false)
                {
                        session_start();
                        self::$sesionIniciada = true;
                }
        }
Anuncios

Este sera el metodo encargado iniciar sesion siempre y cuando la sesionIniciada este con el estado false, en caso de ser verdadero ejecuta session_start y por ultimo modifica el estado de la variable de false a true para informar que ya se inicio sesion.

Anuncios
Nota:
La funcion session_start, crea una sesión o reanuda la actual basada en un identificador de sesión pasado mediante una petición GET o POST, o pasado mediante una cookie.
Anuncios

Con esto comentado podemos pasar a agregar nuestro siguiente metodo:

        public static function set($clave, $valor=false)
        {
                if (is_array($clave) && $valor==false)
                {
                        foreach($clave as $nombre => $valor)
                                $_SESSION[$nombre] = $valor;
                } else {
                        $_SESSION[$clave] = $valor;
                }
        }
Anuncios

Este metodo acepta dos valores, uno para la clave y otro para el valor, pero en este chequearemos si la sesion esta establecida en un array o no, en caso de ser verdadero y valor es igual a false procede a establecer todos los valores de claves-valores de la sesion por medio de un bucle for, en caso contrario establece la sesion con el nuevo valor, tambien nos permite agregar nuevas claves y nuevos valores a la sesion, pasemos a agregar el siguiente metodo:

        public static function quitar($clave)
        {
                $valor = $_SESSION[$clave];
                unset($_SESSION[$clave]);

                return $valor;
        }
Anuncios

Este metodo no solamente recibira un solo parametro o argumento, sino que tambien sera el encargado de quitar la clave informada de la sesion sino que tambien nos lo devolvera, esto puede ser util para las notificaciones de una sola vez, continuemos agregando el siguiente metodo:

        public static function get($clave)
        {
                if(isset($_SESSION[$clave]))
                        return $_SESSION[$clave];

                return false;
        }
Anuncios

Esta funcion nos devolvera la sesion de la clave informada, en caso de no informar alguna nos devuelve un false, es decir nada, pasemos a agregar el siguiente metodo:

        public static function mostrar()
        {
                return $_SESSION;
        }
Anuncios

Este metodo nos devolvera el objeto de la sesion actual para que podamos ver su contenido, pasemos a agregar el ultimo metodo:

        public static function eliminar($clave='')
        {
                if (self::$sesionIniciada==true)
                {
                        if (empty($clave))
                        {
                                session_unset();
                                session_destroy();
                        } else {
                                unset($_SESSION[$clave]);
                        }
                }
        }
Anuncios

Este metodo sera el encargado de eliminar la sesion informada pero tenemos la opcion de no informarla, en todo caso primero chequeamos si la variable sesionIniciada tiene un estado true, en caso de ser cierto lo siguiente es chequear si clave esta vacia, en caso de ser verdadero procede a quitar todas las sesiones y por ultimo elimina al objteo de la sesion, en caso contrario simplemente eliminamos la sesion informada, con todo esto comentado veamos como quedo el codigo final:

Sesion.php

<?php

namespace App\Helpers;

class Sesion
{

	private static $sesionIniciada = false;

        public static function iniciar()
        {
                if (self::$sesionIniciada == false)
                {
                        session_start();
                        self::$sesionIniciada = true;
                }
        }

        public static function set($clave, $valor=false)
        {
                if (is_array($clave) && $valor==false)
                {
                        foreach($clave as $nombre => $valor)
                                $_SESSION[$nombre] = $valor;
                } else {
                        $_SESSION[$clave] = $valor;
                }
        }

        public static function quitar($clave)
        {
                $valor = $_SESSION[$clave];
                unset($_SESSION[$clave]);

                return $valor;
        }

        public static function get($clave)
        {
                if(isset($_SESSION[$clave]))
                        return $_SESSION[$clave];

                return false;
        }

        public static function mostrar()
        {
                return $_SESSION;
        }

        public static function eliminar($clave='')
        {
                if (self::$sesionIniciada==true)
                {
                        if (empty($clave))
                        {
                                session_unset();
                                session_destroy();
                        } else {
                                unset($_SESSION[$clave]);
                        }
                }
        }

}
Anuncios

Solo nos resta una modificacion mas, para ello debemos ir al archivo Config.php en el directorio app, lo primero que haremos sera agregar la siguiente linea despues del namespace:

use App\Helpers\Sesion;
Anuncios

Esto nos importara la clase que generamos anteriormente, nuestra siguiente modificacion sera en el metodo de la clase donde agregaremos las siguientes dos lineas antes de la devolucion del array:

		ob_start();

		Sesion::iniciar();
Anuncios

La primera funcion nos permite activar el almancenamiento en buffer de la salida, y el segundo es el llamado a la funcion iniciar en la clase Sesion, es decir que ahora el metodo tambien sera el encargado de iniciar la sesion cada vez que sea utilizado, pero no nos anticipemos ya veremos para que nos sera util, antes de finalizar veamos el codigo de Config.php:

Config.php

<?php namespace App;

use App\Helpers\Sesion;

class Config
{
        public static function get()
        {
                ob_start();

                Sesion::iniciar();

                return 
                [
                        'namespace' => 'App\Controllers\\',
                        'default_cont' => 'inicio',
                        'default_met' => 'index',
                        'db_tipo' => 'mysql',
                        'db_host' => 'localhost',
                        'db_nombre' => 'curso',
                        'db_usuario' => 'tinchicus',
                        'db_clave' => 'clave'
                ];
        }
}
Anuncios

En resumen, hoy hemos visto las clases que nos permitiran manipular las direcciones URL, Url.php, y la que nos permitira manipular las sesiones, Sesion.php, hemos hablado de cada uno de los metodos que contienen y por ultimo hemos modificado la clase de configuraciones para que inicie sesion cada vez que se llama al metodo get de esta, espero les haya gustado sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50