Spoon

RECU-0271 (Recurso Ficha Técnica)

Descripción

Spoon es una librería de código PHP5 orientada a mejorar la velocidad de ejecución, tanto a nivel de páginas como a la hora de escribir código, simplificando la estructura del mismo. Debido a que posee una clara estructura lógica, la curva de aprendizaje necesaria sobre esta librería es muy reducida. Spoon proporciona un catálogo de clases muy bien documentadas que favorecen y simplifican la construcción web.

Ejemplo de uso

A continuación vamos a mostrar un ejemplo básico del manejo de sesiones con Spoon. Las sesiones proveen una manera de asociar información de los visitantes con un sitio web. Cada sesión tiene un único identificador que permite la comunicación entre el servidor y el usuario. Son comúnmente usadas para almacenar los datos del usuario logado dentro de la aplicación.

El ejemplo siguiente almacena el valor "bar" en una variable de sesión denominada "foo"

<?php 

// añade las clases requeridas
require_once 'spoon/spoon.php';

// inicia la sesión
SpoonSession::start();

// set session variable 'foo' with value 'bar'
SpoonSession::set('foo', 'bar');

?>

El ejemplo siguiente recupera los datos almacenados en la clave de sesión denominada "foo", si existe:

<?php 

// añade las clases necesarias
require_once 'spoon/spoon.php';

// Comprueba la existencia de la clave
if(SpoonSession::exists('foo'))
{
    // muestra la salida del método get()
    Spoon::dump(SpoonSession::get('foo'));
}

?>

La salida sería

string(3) "bar"

SpoonSession::exists() acepta múltiples calves a controlar, pero solo devuelve true si todas las claves se encuentran en $_SESSION.

Ahora se va a eliminar la sesión, para ello se puede usar SpoonSession::destroy(). En el ejemplo de abajo el identificador de sesión va a estar inaccesible después de la destrucción. Devolverá la excepción SpoonSessionException.

<?php 

// required classes
require_once 'spoon/spoon.php';

// muestra la identificación
Spoon::dump(SpoonSession::getSessionId(), false);

// destroy session - desloguea al usuario destruyendo su sesión
SpoonSession::destroy();

// Intenta mostrar el ID de la sesión - Esto lanzará una excepción
Spoon::dump(SpoonSession::getSessionId());

?>

Ventajas e inconvenientes

No se debe entender Spoon como un framework de desarrollo. Es un conjunto de clases, que ofrecen la implementación basada en el paradigma de la programación orientada a objetos y PHP5. De esta manera, se encuentra una diferencia básica basada en la imposición que realizan los frameworks a la hora de realizar código. Que Spoon no sea un framework es una de las claves para saber si nos interesará o no para nuestro trabajo de desarrollo. Sus diferencias con respecto a los frameworks se traducirán unas veces en ventajas y otras en inconvenientes.

Entre las ventajas tenemos:

  • Facilidad de instalación
  • Sencillez de uso, sobre todo para dar los primeros pasos
  • Posibilidad de continuar con las prácticas habituales de desarrollo
  • Mayor rapidez de ejecución de las páginas

Pero claro está que también existen desventajas si se compara con un framework y es que el alcance no es tan elevado. Lo que antes era una ventaja, al poder continuar con la prácticas de desarrollo anteriores, ahora puede llegar a ser un defecto. Si se estaban realizando las cosas de manera poco eficiente es muy probable que la situación no varíe con el uso de Spoon. Sin embargo, los frameworks muchas veces obligan a programar de una manera determinada porque está demostrado que es una buena forma de desarrollar aplicaciones y es que, tal y como están diseñados los frameworks, muchas veces fuerzan a realizar prácticas de programación que se consideran que son siempre recomendables. Ejemplos de este tipo de actuaciones serían prácticas como reutilizar código fuente, encapsular determinadas partes de la aplicación para resolver sus complejidades, asegurar que todos los datos de entrada son seguros, etc

Para formar una idea más exacta de las funcionalidades que cubre Spoon, se puede encontrar mucha documentación que describe un listado de los componentes de los que dispone. Se comprueba que existen clases para manejar multitud de partes esenciales en las aplicaciones web, como son: sesiones, formularios, cookies, fechas, emails, RSS, archivos, imágenes, plantillas, etc.

Requisitos e incompatibilidades

  • Como el código fuente de Spoon dispone de diversos archivos, que además se incluyen unos a otros, se debe realizar un paso previo, que es incluir el directorio donde está Spoon en el "include path" o ruta de inclusión de archivos PHP. Un ejemplo de inclusión es el siguiente:
<?php
//Definir el directorio donde está la carpeta con las librerías
define('PATH_LIBRARY', 'C:/xampp/htdocs/');

// Añadir ese directorio a la ruta de includes
set_include_path(get_include_path() . PATH_SEPARATOR . PATH_LIBRARY);

//Se puede incluir ahora spoon
require_once 'spoon/spoon.php';
require_once 'spoon/template/template.php';
?>

Contenidos relacionados

Pautas
Área: Desarrollo » Librerías y Módulos » PHP
Código Título Tipo Carácter
LIBP-0350 Librerías para aplicaciones PHP Libro de pautas Directriz Recomendada