Posts Tagged ‘ Framework

Parametrizando nuestro sistema con symfony 1/2

VN:F [1.9.22_1171]
Rating: 5.0/5 (2 votes cast)

Mucho se habla hoy en día de que un sistema parametrizado es mucho mejor que los famosos “códigos en duro” que los programadores solemos escribir dentro del fuente de los programas. Es muy normal ver gente que usa combos de selección múltiple que en realidad van cargados dentro del mismo HTML de la página. El problema ocurre realmente cuando hacemos esto con varias páginas y luego resulta muy engorroso el mantenimiento del sitio ya que hay que buscar todos los lugares en donde lo hicimos a la hora de agregar, quitar o modificar alguna de las opciones de nuestro combo.

Mucha gente acostumbra crear tablas paramétricas para por ejemplo “estados”, “paises”, “tipos”, etc. Considero, y es una opinión muy personal, que cuando estas tablas son creadas habría que analizar 2 puntos a fin de determinar si las mismas podrían ir dentro de la estructura que voy a proponer con este artículo.

  1. Cantidad de registros : Si la cantidad de registros es relativamente fija y no crecen tan variablemente como son las tablas transaccionales.
  2. Cantidad de columnas: Si éstas tablas tienen exactamente 2 columnas como generalmente serían id y nombre.

Cabe mencionar que creando tablas como las descriptas arriba vemos un crecimiento muy grande en el número de tablas de la base de datos y por supuesto un Diagrama Entidad Relación (DER – ER) muy complejo para graficar ya que la mayoría de las tablas suelen ser de este tipo.

Tomando en cuenta esto, propongo que trabajemos con una tabla a la cual denominaremos “parametro” y con la ayuda de Symfony y los artículos de la serie Personalizando el objeto sfUser de Symfony veremos como centralizar los datos paramétricos dentro de un solo lugar y los almacenaremos dentro de la sesión del usuario activo del sistema.

Leer mas

Extendiendo el sfActions de Symfony 2/3

VN:F [1.9.22_1171]
Rating: 4.8/5 (2 votes cast)

Mensajes al usuario

Habiendo visto la primera parte de esta serie Extendiendo el sfActions de Symfony con el primer artículo, en el que vimos básicamente las primeras configuraciones que deberíamos hacer creando una clase BaseActions que extendiera de sfActions y haciendo que nuestros actions extiendan directamente de nuestra clase base, ahora podemos pasar a ver un ejemplo muy frecuente de uso, basándonos sobre el objeto myUser del cual hablamos en la serie Personalizando el objeto sfUser de Symfony.

Lo que hicimos en el myUser fue básicamente, para recordar, un método que permitiría cargar dentro del objeto Flash los mensajes de INFO, WARN y ERROR para los usuarios. Nos quedó algo así:

–>/apps/frontend/lib/myUser.class.php

class myUser extends sfBasicSecurityUser
{
    const INFO_MESSAGE = 'infoMessages';
    const WARNING_MESSAGE = 'warnMessages';
    const ERROR_MESSAGE = 'errorMessages';

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // METODOS PARA MANEJO DE MENSAJES FLASH
    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    /**
     * Agrega mensajes al FLASH del objeto sfUser creando un array por cada tipo
     * de mensaje (myUser::INFO_MESSAGE, myUser::WARNING_MESSAGE, myUser::ERROR_MESSAGE).
     * El mensaje $msg será agregado al nivel correspondiente que por defecto será el INFO
     * @param string $msg
     * @param string $level
     */
    public function addMessage($msg, $level = myUser::INFO_MESSAGE)
    {
        //-- Obtengo el array almacenado, en caso de no existir retorna una array vacío
        $flashContent = $this->getFlash($level, array());

        //-- Controla si ya existe un mensaje igual para no insertarlo repetido
        if(!in_array($msg, $flashContent))
        {
            //- Agrego el mensaje enviado en la siguiente posición disponible del array
            $flashContent[] = $msg;

            //-- Seteo el array al Flash nuevamente
            $this->setFlash($level, $flashContent);
        }
    }
}

Ahora podemos ingresar desde nuestros actions directamente así:
Leer mas

Personalizando el objeto sfUser de Symfony 2/2

VN:F [1.9.22_1171]
Rating: 4.0/5 (1 vote cast)

Agregando inteligencia a los Flash para mensajes

Como una continuación a la serie de artículos sobre Personalizando el objeto sfUser de Symfony vamos a usar la funcionalidad “Flash” del objeto sfUser (el flash aquí no es el de adobe X-D ). Los métodos setFlash() y getFlash() en realidad usan la sesión del usuario para almacenar los datos, la única diferencia es que estos a la siguiente vez que se ejecute una redirección en la página, el mismo objeto sfUser se encarga de borrar los datos para que no permanezcan en sesión, ya que solo sirven para mostrar los mensajes una sola vez.

Con un poco de CSS podemos lograr que existan tres tipos de mensajes, trabajando un poco con los colores y algunos DIVs:

  • infoMessages: Informaciones básicas como ser “Registro grabado con éxito”, “Bienvenido usuario: Jhon Doe”, etc
  • warnMessages: Informaciones de alertas (no errores), “Usuario o clave inválida”, “El registro no pudo ser guardado por que fallo alguna validación”
  • errorMessages: Estos si son errores ocurridos en la aplicación, “No se puedo conectar a la base de datos”, “El archivo que intenta leer no existe”, etc

Por cada uno de estos mensajes vamos a crear un atributo de tipo Flash que va a contener un array para que por ejemplo si queremos mostrar más de un mensaje de tipo INFO cada uno ocupe una posición y terminemos mostrándolos todos.

Para esto vayamos al archivo %PROJECT%/apps/%APP%/lib/myUser.class.php el cual es como la extensión del objeto sfUser preparado para que lo podamos moldear nosotros, y agreguemos lo siguiente:

Leer mas

Personalizando el objeto sfUser de Symfony 1/2

VN:F [1.9.22_1171]
Rating: 4.3/5 (4 votes cast)

Presentación del sfUser

Dando continuidad a los artículos de Symfony quiero mostrarles algo que fue de mucha utilidad cuando lo conseguí hacer. Para los que no lo saben el objeto sfUser es el encargado de manejar las sesiones dentro de Symfony desaconsejando completamente el uso del array superglobal $_SESSION. Este objeto maneja por dentro la sesión del usuario y a esta funcionalidad le agrega mejoras interesantes para que los desarrolladores no tengamos que sufrir tanto. Esto es lo que nos dice el manual de Symfony:

En Symfony, el desarrollador no tiene que manipular directamente las sesiones, sino que usa el objeto sfUser, que representa al usuario final de la aplicación.

Para acceder al objeto sfUser, o lo que es lo mismo, para obtener o guardar datos en sesión, tenemos diferentes formas de hacerlo aunque siempre invocando a este objeto. Desde cualquier action, por estar extendiendo de sfActions, podemos acceder directamente asi: Leer mas

Extendiendo el sfActions de symfony 1/3

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)

Introducción al sfActions

Como habrán notado cuando trabajamos dentro de un módulo tenemos que crear los templates y los actions. Cada action creado debe extender de una clase propia del framework llamado sfActions que se encuentra dentro de la carpeta lib/action/ de los fuentes de symfony. Ésta a su vez hereda de otra y van las extensiones para arriba. Esto nos da la posibilidad de heredar código para todos nuestros actions.

La idea de éste posts es crear nuestras propias funcionalidades para no estar escribiendo muchas veces la misma cosa dentro de nuestros actions y vamos a ir haciendolo de a poco de acuerdo a las necesidades que vaya teniendo dentro de mis proyectos.

Para hacer esto lo que hago es crear dentro de la carpeta lib de mi proyecto un archivo BaseActions de la siguiente manera.

class BaseActions extends sfActions
{
}

Hacemos que nuestra clase BaseActions extienda de sfActions para que podamos seguir utilizando las funcionalidades que siempre usabamos y ahora cada vez que creamos un nuevo action lo hacemos de la siguiente manera. Leer mas

Symfony Framework

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Symfony Framework Ahora que ya entendemos que es un Framework MVC podemos hablar sobre uno de los principales temas de los que vamos a ir hablando durante la vida de este blog.

Nuevamente veamos que dice wikipedia:

Symfony es un completo framework  diseñado para optimizar el desarrollo de las aplicaciones web mediante algunas de sus principales características. Para empezar, separa la lógica de negocio, la lógica de servidor y la presentación de la aplicación web. Proporciona varias herramientas y clases encaminadas a reducir el tiempo de desarrollo de una aplicación web compleja. Además, automatiza las tareas más comunes, permitiendo al desarrollador dedicarse por completo a los aspectos específicos de cada aplicación. El resultado de todas estas ventajas es que no se debe reinventar la rueda cada vez que se crea una nueva aplicación web.

Symfony está desarrollado completamente en PHP 5. Ha sido probado en numerosos proyectos reales y se utiliza en sitios web de comercio electrónico de primer nivel. Symfony es compatible con la mayoría de gestores de bases de datos, como MySQL, PostgreSQL, Oracle y Microsoft SQL Server. Se puede ejecutar tanto en plataformas *nix (Unix, Linux, etc.) como en plataformas Windows.

Gracias a Fabien Potencier, creador de symfony, podemos tener todo esto de los que habla arriba. Symfony es un framework de frameworks. Obtiene ideas y funcionalidades de varias otras librerías y los añade como funcionalidad. Leer mas

Framework MVC

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Hoy en día los términos Framework y MVC son muy utilizados dentro del mundo del desarrollo informático y personalmente creo que suele ser un poco difícil entenderlos rápidamente, por lo que me gustaría hacer una explicación sencilla nada más para introducir a los demás artículos sobre el framework MVC para PHP llamado Symfony del cual estaré hablando con las siguientes entradas del blog.

Considero muy interesante esta parte de la definición para framework publicada por wikipedia:

… conjunto estandarizado de conceptos, prácticas y criterios … Son diseñados con la intención de facilitar el desarrollo de software, permitiendo a los diseñadores y programadores pasar más tiempo identificando requerimientos de software que tratando con los tediosos detalles de bajo nivel …

Un framework es mucho más que solo un conjunto de librerías que ayudan a programar más rápido, es una llamada de atención que dice: “Señores, pongámonos de acuerdo y hagámoslo de esta forma … yo te ayudo pero yo pongo las reglas”. Esto finalmente son nuevas reglas para programar que ayudan a mantener un código uniforme, ordenado y por sobre todo siguiendo un estándar. Leer mas