Traducciones: English
Biblioteca PHP para manejo de sesiones.
- Requisitos
- Instalación
- Clases disponibles
- Excepciones utilizadas
- Uso
- Tests
- Tareas pendientes
- Registro de Cambios
- Contribuir
- Patrocinar
- Licencia
-
Sistema operativo: Linux | Windows.
-
Versiones de PHP: 8.0 | 8.1 | 8.2 | 8.3.
La mejor forma de instalar esta extensión es a través de Composer.
Para instalar PHP Session library, simplemente escribe:
composer require josantonius/session
El comando anterior sólo instalará los archivos necesarios, si prefieres descargar todo el código fuente puedes utilizar:
composer require josantonius/session --prefer-source
También puedes clonar el repositorio completo con Git:
git clone https://github.com/josantonius/php-session.git
Josantonius\Session\Session
Iniciar la sesión:
/**
* @throws HeadersSentException si los _headers_ ya se enviaron.
* @throws SessionStartedException si la sesión ya está iniciada.
* @throws WrongSessionOptionException si hay algún fallo con las opciones.
*
* @see https://php.net/session.configuration para ver la lista de opciones disponibles.
*/
public function start(array $options = []): bool;
Comprobar si la sesión fue iniciada:
public function isStarted(): bool;
Establecer un atributo por su nombre:
/**
* @throws SessionNotStartedException si la sesión no está iniciada.
*/
public function set(string $name, mixed $value): void;
Obtener un atributo por su nombre:
/**
* Opcionalmente define un valor por defecto cuando el atributo no existe.
*/
public function get(string $name, mixed $default = null): mixed;
Obtener todos los atributos:
public function all(): array;
Comprobar si un atributo existe en la sesión:
public function has(string $name): bool;
Establecer múltiples atributos de una vez:
/**
* Si los atributos existen se sustituyen, si no existen se crean.
*
* @throws SessionNotStartedException si la sesión no está iniciada.
*/
public function replace(array $data): void;
Eliminar un atributo por su nombre y devolver su valor:
/**
* Opcionalmente define un valor por defecto cuando el atributo no existe.
*
* @throws SessionNotStartedException si la sesión no está iniciada.
*/
public function pull(string $name, mixed $default = null): mixed;
Eliminar un atributo por su nombre:
/**
* @throws SessionNotStartedException si la sesión no está iniciada.
*/
public function remove(string $name): void;
Liberar todas las variables de la sesión:
/**
* @throws SessionNotStartedException si la sesión no está iniciada.
*/
public function clear(): void;
Obtiene el ID de la sesión:
public function getId(): string;
Establecer el ID de la sesión:
/**
* @throws SessionStartedException si la sesión ya está iniciada.
*/
public function setId(string $sessionId): void;
Actualizar el ID de la sesión actual con uno recién generado:
/**
* @throws SessionNotStartedException si la sesión no está iniciada.
*/
public function regenerateId(bool $deleteOldSession = false): bool;
Obtener el nombre de la sesión:
public function getName(): string;
Establecer el nombre de la sesión:
/**
* @throws SessionStartedException si la sesión ya está iniciada.
*/
public function setName(string $name): void;
Eliminar la sesión:
/**
* @throws SessionNotStartedException si la sesión no está iniciada.
*/
public function destroy(): bool;
Josantonius\Session\Facades\Session
Iniciar la sesión:
/**
* @throws HeadersSentException si los _headers_ ya se enviaron.
* @throws SessionStartedException si la sesión ya está iniciada.
* @throws WrongSessionOptionException si hay algún fallo con las opciones.
*
* @see https://php.net/session.configuration para ver la lista de opciones disponibles.
*/
public static function start(array $options = []): bool;
Comprobar si la sesión fue iniciada:
public static function isStarted(): bool;
Establecer un atributo por su nombre:
/**
* @throws SessionNotStartedException si la sesión no está iniciada.
*/
public static function set(string $name, mixed $value): void;
Obtener un atributo por su nombre:
/**
* Opcionalmente define un valor por defecto cuando el atributo no existe.
*/
public static function get(string $name, mixed $default = null): mixed;
Obtener todos los atributos:
public static function all(): array;
Comprobar si un atributo existe en la sesión:
public static function has(string $name): bool;
Establecer múltiples atributos de una vez:
/**
* Si los atributos existen se sustituyen, si no existen se crean.
*
* @throws SessionNotStartedException si la sesión no está iniciada.
*/
public static function replace(array $data): void;
Eliminar un atributo por su nombre y devolver su valor:
/**
* Opcionalmente define un valor por defecto cuando el atributo no existe.
*
* @throws SessionNotStartedException si la sesión no está iniciada.
*/
public static function pull(string $name, mixed $default = null): mixed;
Eliminar un atributo por su nombre:
/**
* @throws SessionNotStartedException si la sesión no está iniciada.
*/
public static function remove(string $name): void;
Liberar todas las variables de la sesión:
/**
* @throws SessionNotStartedException si la sesión no está iniciada.
*/
public static function clear(): void;
Obtiene el ID de la sesión:
public static function getId(): string;
Establecer el ID de la sesión:
/**
* @throws SessionStartedException si la sesión ya está iniciada.
*/
public static function setId(string $sessionId): void;
Actualizar el ID de la sesión actual con uno recién generado:
/**
* @throws SessionNotStartedException si la sesión no está iniciada.
*/
public static function regenerateId(bool $deleteOldSession = false): bool;
Obtener el nombre de la sesión:
public static function getName(): string;
Establecer el nombre de la sesión:
/**
* @throws SessionStartedException si la sesión ya está iniciada.
*/
public static function setName(string $name): void;
Eliminar la sesión:
/**
* @throws SessionNotStartedException si la sesión no está iniciada.
*/
public static function destroy(): bool;
use Josantonius\Session\Exceptions\HeadersSentException;
use Josantonius\Session\Exceptions\SessionException;
use Josantonius\Session\Exceptions\SessionNotStartedException;
use Josantonius\Session\Exceptions\SessionStartedException;
use Josantonius\Session\Exceptions\WrongSessionOptionException;
Ejemplos de uso para esta biblioteca:
use Josantonius\Session\Session;
$session = new Session();
$session->start();
use Josantonius\Session\Facades\Session;
Session::start();
use Josantonius\Session\Session;
$session = new Session();
$session->start([
// 'cache_expire' => 180,
// 'cache_limiter' => 'nocache',
// 'cookie_domain' => '',
'cookie_httponly' => true,
'cookie_lifetime' => 8000,
// 'cookie_path' => '/',
'cookie_samesite' => 'Strict',
'cookie_secure' => true,
// 'gc_divisor' => 100,
// 'gc_maxlifetime' => 1440,
// 'gc_probability' => true,
// 'lazy_write' => true,
// 'name' => 'PHPSESSID',
// 'read_and_close' => false,
// 'referer_check' => '',
// 'save_handler' => 'files',
// 'save_path' => '',
// 'serialize_handler' => 'php',
// 'sid_bits_per_character' => 4,
// 'sid_length' => 32,
// 'trans_sid_hosts' => $_SERVER['HTTP_HOST'],
// 'trans_sid_tags' => 'a=href,area=href,frame=src,form=',
// 'use_cookies' => true,
// 'use_only_cookies' => true,
// 'use_strict_mode' => false,
// 'use_trans_sid' => false,
]);
use Josantonius\Session\Facades\Session;
Session::start([
'cookie_httponly' => true,
]);
use Josantonius\Session\Session;
$session = new Session();
$session->isStarted();
use Josantonius\Session\Facades\Session;
Session::isStarted();
use Josantonius\Session\Session;
$session = new Session();
$session->set('foo', 'bar');
use Josantonius\Session\Facades\Session;
Session::set('foo', 'bar');
use Josantonius\Session\Session;
$session = new Session();
$session->get('foo'); // null si el atributo no existe
use Josantonius\Session\Facades\Session;
Session::get('foo'); // null si el atributo no existe
use Josantonius\Session\Session;
$session = new Session();
$session->get('foo', false); // false si el atributo no existe
use Josantonius\Session\Facades\Session;
Session::get('foo', false); // false si el atributo no existe
use Josantonius\Session\Session;
$session = new Session();
$session->all();
use Josantonius\Session\Facades\Session;
Session::all();
use Josantonius\Session\Session;
$session = new Session();
$session->has('foo');
use Josantonius\Session\Facades\Session;
Session::has('foo');
use Josantonius\Session\Session;
$session = new Session();
$session->replace(['foo' => 'bar', 'bar' => 'foo']);
use Josantonius\Session\Facades\Session;
Session::replace(['foo' => 'bar', 'bar' => 'foo']);
use Josantonius\Session\Session;
$session = new Session();
$session->pull('foo'); // null si el atributo no existe
use Josantonius\Session\Facades\Session;
Session::pull('foo'); // null si el atributo no existe
use Josantonius\Session\Session;
$session = new Session();
$session->pull('foo', false); // false si el atributo no existe
use Josantonius\Session\Facades\Session;
Session::pull('foo', false); // false si el atributo no existe
use Josantonius\Session\Session;
$session = new Session();
$session->remove('foo');
use Josantonius\Session\Facades\Session;
Session::remove('foo');
use Josantonius\Session\Session;
$session = new Session();
$session->clear();
use Josantonius\Session\Facades\Session;
Session::clear();
use Josantonius\Session\Session;
$session = new Session();
$session->getId();
use Josantonius\Session\Facades\Session;
Session::getId();
use Josantonius\Session\Session;
$session = new Session();
$session->setId('foo');
use Josantonius\Session\Facades\Session;
Session::setId('foo');
use Josantonius\Session\Session;
$session = new Session();
$session->regenerateId();
use Josantonius\Session\Facades\Session;
Session::regenerateId();
use Josantonius\Session\Session;
$session = new Session();
$session->regenerateId(true);
use Josantonius\Session\Facades\Session;
Session::regenerateId(true);
use Josantonius\Session\Session;
$session = new Session();
$session->getName();
use Josantonius\Session\Facades\Session;
Session::getName();
use Josantonius\Session\Session;
$session = new Session();
$session->setName('foo');
use Josantonius\Session\Facades\Session;
Session::setName('foo');
use Josantonius\Session\Session;
$session = new Session();
$session->destroy();
use Josantonius\Session\Facades\Session;
Session::destroy();
Para ejecutar las pruebas necesitarás Composer y seguir los siguientes pasos:
git clone https://github.com/josantonius/php-session.git
cd php-session
composer install
Ejecutar pruebas unitarias con PHPUnit:
composer phpunit
Ejecutar pruebas de estándares de código con PHPCS:
composer phpcs
Ejecutar pruebas con PHP Mess Detector para detectar inconsistencias en el estilo de codificación:
composer phpmd
Ejecutar todas las pruebas anteriores:
composer tests
- Añadir nueva funcionalidad
- Mejorar pruebas
- Mejorar documentación
- Mejorar la traducción al inglés en el archivo README
- Refactorizar código para las reglas de estilo de código deshabilitadas (ver phpmd.xml y phpcs.xml)
- Mostrar un ejemplo de renovación de la duración de la sesión
- ¿Funcionalidad para activar/desactivar excepciones?
- ¿Funcionalidad para añadir prefijos en los atributos de sesión?
Los cambios detallados de cada versión se documentan en las notas de la misma.
Por favor, asegúrate de leer la Guía de contribución antes de hacer un pull request, comenzar una discusión o reportar un issue.
¡Gracias por colaborar! ❤️
Si este proyecto te ayuda a reducir el tiempo de desarrollo, puedes patrocinarme para apoyar mi trabajo 😊
Este repositorio tiene una licencia MIT License.
Copyright © 2017-actualidad, Josantonius