sábado, 5 de diciembre de 2009

ORM de nivel enterprise

Si bien nos falta recorrer un largo camino vamos hacia ese objetivo: llegar a un ORM de nivel "enterprise". YORM, el ORM de Yupp Framework hoy está soportando las siguientes características:

  • Mapeo de clases con atributos de diversos tipos (TEXT, DATE, BOOLEAN, INT, FLOAT, entre otros)
  • Mapeo de estructuras de herencia en 2 sabores: cuando la clase A hereda de la clase B se puede optar por "mapeo de herencia en tabla única", entonces A y B se mapean a la misma tabla, o por "mapeo de herencia de múltiple tabla" donde A y B se mapean a distintas tablas, cualquiera de las opciones es transparente para el programador.
  • Mapeo de relaciones entre clases: estamos soportando relaciones unidireccionales y bidireccionales con cardinalidades 1-1, 1-N y N-N.
  • Las relaciones múltiples pueden ser de 3 tipos: colecciones, listas o conjuntos. Las colecciones pueden tener elementos repetidos y desordenados, las listas tienen elementos ordenados, y los conjuntos no tienen repetidos.
  • Estamos soportando 3 bases de datos: MySQL, SQLite y el último agregado PosgreSQL.
  • Podemos definir restricciones sobre los datos y esas restricciones se verifican antes de ingresar cualquier dato a la base.
  • Salvado en cascada: simplifica el código PHP al salvar en la base una estructura compleja de clases relacionadas a partir de la invocación al método save() en la clase principal.
  • Carga perezosa: cuando se carga una clase desde la base no se cargan sus clases asociadas, las mismas son cargadas una vez que son referenciadas, o sea que si no se usan, no se cargan, ahorrando tiempo.
  • Creación automática del esquema de en la base de datos: crea todas las tablas necesarias haciendo un clic.
Qué esperamos para el futuro en ORM:
  • Soporte para más bases de datos: Oracle, SQLServer, Access, etc.
  • Soporte para persistencia de colecciones de valores simples (Strings, Integers, Dates, etc).
  • Soporte para transacciones y rollback.
  • Capacidad de especificar los nombres de las columnas donde se guardan los campos de las clases.
  • muchas otras características...
¡Aceptamos sugerencias!
-

martes, 1 de diciembre de 2009

Liberamos Yupp PHP Framework v0.1.7

-
Luego de largas horas de trabajo estamos muy contentos de liberar la nueva versión de Yupp PHP Framework.


Las diferencias con la versión 0.1.6.7 son:
  1. Se corrije un bug que se liberó con Yupp 0.1.6.7 en la clase routing.Executer, pasaba cuando se retornaba null de una accion de un controller.

  2. Corrección de DatabaseMySQL en consultas que buscan por strings numéricos.

  3. Se eliminaron las clases Filter y Mapping, y se creó una clase Router que cumple las tareas de las elminadas y es mucho mas simple de usar. (http://code.google.com/p/yupp/issues/detail?id=10)

  4. YuppContext se quitan pasajes por referencia.

  5. Se agregan pruebas de generacion de controles complejos en formularios: html y calendar. html usa TinyMCE y calendar usa YUI Calendar. Se agregan ambas librerias al framework.

  6. Primer integración de PostgreSQL a Yupp. Nueva clase DatabasePosgreSQL.

  7. Correcciones a DAL, PersistentObject y PersistentManager.


Descargas:
http://code.google.com/p/yupp/downloads/list
http://www.simplewebportal.net/host/1022.htm

TAG SVN:
http://code.google.com/p/yupp/source/browse/#svn/tags/v017

Cualquier duda, consulta o reporte de error pueden hacerla en el grupo google (opción "debates > nueva entrada"):
http://groups.google.com/group/yuppframeworkphp


Hasta pronto!

Pablo Pazos Gutiérrez
Líder de proyecto
Yupp PHP Framework

-
-

lunes, 23 de noviembre de 2009

Próxima liberación de Yupp Framework

Amigos, como todos quienes siguen el grupo sabrán, en la última
versión de Yupp (v0.1.6.7) se me coló un bug en la clase Executer que
no permitía el correcto funcionamiento del framework. Si ven en un
post previo adjunté la solución, esta solución también fue subida al
SVN como todos los cambios que voy haciendo: http://yupp.googlecode.com/svn/trunk/

Ahora me encuentro integrando PostgreSQL al framework. La próxima
versión será la 0.1.7 y aparte de PostgreSQL vendrá con algunos
frameworks Javascript adjuntos, con los cuales estoy haciendo pruebas
de integración, como el editor WYSIWYG TinyMCE y el YUI Calendar.
También hice una siplificación del Router, creando una sola clase y
eliminando las clases Filter y Mapping (ahora todas sus
funcionalidades están en la clase Router).

En definitiva, la próxima versión podrá usarse con cualquiera de estos
DBMS: MySQL, SQLite o PostgreSQL.

domingo, 1 de noviembre de 2009

Cómo crear un blog, paso a paso

He actualizado el documento de como crear un blog simple con Yupp PHP Framework para su última versión 0.1.6.7.

El documento puede descargarse desde: http://code.google.com/p/yupp/downloads/list

La última versión del framework se puede descargar desde el mismo sitio y contiene la implementación del blog para poder ver el producto final de lo que se muestra en el documento.

Cualquier duda o comentario la pueden colgar en nuestro grupo: http://groups.google.com/group/yuppframeworkphp


Hasta pronto.

martes, 27 de octubre de 2009

Yupp Portal v0.1

Estamos muy contentos de poder liberar la primer versión del componente para crear portales web de Yupp Framework: Yupp Portal

¿Para qué sirve Yupp Portal?

Es una herramienta de alta productividad que permite crear un portal web completo en 5 minutos, sin necesidad de programación extra, solamente es necesario configurar la conexión con la base de datos.

Este componente permite:

Administrar páginas:
  • Crear páginas con un clic
  • Editar contenido con editor visual desde la web
  • Estados de páginas: Normal, Borrador, Deshabilitada, Oculta
  • Edición visual de items del menú principal
  • Edición visual de contenido fijo (por ejemplo banners que se muestran en todas las páginas)
Administración de usuarios:
  • Administración de roles
  • Crear/Editar/Eliminar/Aprobar usuarios
  • Registro de usuarios y aprobación con email en un clic
  • Login/Logout
Tres roles disponibles:
  • Administrador: crea/edita páginas, modifica el menú, crea/edita usuarios
  • Editor: crea/edita páginas, modifica el menú
  • Usuario: ve páginas ocultas

Por más información: http://code.google.com/p/yupp-portal/

domingo, 25 de octubre de 2009

Liberamos Yupp PHP Framework v0.1.6.7

Amigos, estamos muy contentos de anunciar la liberación de la nueva versión de Yupp PHP Framework.


Las diferencias con respecto a la versión 0.1.6.4 son:

1. Correccion a YuppForm en el campo date.

2. Se agrega el método YuppController.componentControllersAction() que sirve para mostrar los controladores de un componente dado.

3. Se agrega la restricción "inList" que permite verificar si un valor está en una lista de valores dados.

4. Se agrega el metodo PersistentObject.hasFieldErrors( $attr ) para preguntar si existen errores en el valor de un atributo particular.

5. Se agrega el metodo PersistentObject.attributeDeclaredOnThisClass() para saber si un determinado atributo fue declarado en una clase. Sirve para derivar los nombres de las tablas intermedias en relaciones multiples.

6. Se agrega el helper DisplayHelper.yupp_select para crear selects html de forma sencilla.

7. Se corrije el metodo PersistentObject.validate() para que priorice la validacion de nulos y vacios sobre el resto de las validaciones. Ahora si un valor es nullable(true) y tambien debe ser email(), la validacion de un valor vacío devuelve true, antes fallaba en la validacion de email.

8. Correcciones menores en la clase Contraints.

9. El método PersistentObject.setProperties() ahora hace trim de los valores antes de asginarlos a los campos, esto es para evitar el llenado accidental de datos con espacios en blanco delante o detrás del valor ingresado.

10. Agregamos soporte para varios subdirectorios dentro del directorio de clases de modelo, para ordenar las clases cuando son muchas.
- Se corrige el metodo ModelUtils.getModelClasses() para poder crear subdirectorios en el directorio del modelo de un componente.
- Correccion al metodo YuppConventions::getModelPath().
- Correccion en PackageNames a una expresion regular para poder poner subdirectorios en el modelo.
- Correcciones en YuppLoader, en el cargado del modelo para permitir definir clases en subdirectorios.

11. Corrección en el método YuppConventions::relTableName(..) donde se creaba mal el nombre de la tabla intermedia para relaciones hasMany si se trataba de salvar una subclase y el atributo estaba declarado en su superclase.

12. Se corrige el helper Helpers.template() para mejorar el pasaje de parametros.

13. Correccion en el mapeo de herencia de tabla multiple para soportar modelos de relaciones y herencia complejos (PersistentManager, PersistentObject, MultipleTableInheritanceSupport).

14. Se corrije el metodo YuppController::getFlash() y se hace limpieza.

15. Corrección de la comparación de strings para generar consultas MySQL (donde el "=" no considera mayúsculas y minúsculas)
- Se reescribió completamente la evaluación de QUery que genera las consultas SQL, para que considera las particularidades de cada DBMS (MySQL, SQLite, PostgreSQL, etc)


Descargas:
http://code.google.com/p/yupp/downloads/list
http://www.simplewebportal.net/host/1022.htm

TAG SVN:
http://code.google.com/p/yupp/source/browse/#svn/tags/v0167

Cualquier duda, consulta o reporte de error pueden hacerla en el grupo google (opción "debates > nueva entrada"):
http://groups.google.com/group/yuppframeworkphp


Hasta pronto!

Pablo Pazos Gutiérrez
Líder de proyecto
Yupp PHP Framework

jueves, 17 de septiembre de 2009

Herramientas para comprimir codigo javascript

Para crear sistemas web muchas veces me veo utilizando librerías y scripts javscript que encuentro en internet. Muchos de estos pesan entre 150 y 300 Kb, haciendo que el tiempo de carga de las páginas web sea muy lento. Por suerte existen herramientas que nos permiten comprimir esas librerías y dejarlas de un tamaño aproximadamente de un 30% del tamaño original.

En general estas herramientas tienen un cuadro de texto donde se debe pegar el código javascript a comprimir, elegir algunas opciones de compresión, luego vemos el código comprimido y la razón de compresión (tamaño original / comprimido). Distintas opciones de compresión harán que tu código quede más reducido aún.

Aquí dejo algunos links a estas herramientas:
Feliz compresión!

lunes, 3 de agosto de 2009

PHP y los problemas con la sesión

PHP tiene un problema (depende de si se lo considera como tal) con las sesiones cuando se acceden a subdominios del sitio actual.

Hoy particularmente me sucedió que tenía un sitio http://femisaluddigital.net.uy el cual corre con el componente Yupp Portal. En una página del portal había un link a otra página pero el dominio del link era a http://www.femisaluddigital.net.uy/...., notar el WWW adelante.

Entonces, cuando si usuario está logueado en el sitio http://femisaluddigital.net.uy e intenta acceder al link que empieza con www la sesión se pierde y el usuario aparece como no logueado, con los problemas que esto trae (el usuario debe volver a loguearse).

Entonces las opciones serían:
  • Que los links a páginas locales se armen dinámicamente considerando la URL actual (viendo si tiene o no www al principio).
  • Guardar la sesión en la base de datos y que tanto para el dominio que empieza con www como para el que no tiene www, la sesión se acceda de la misma forma.
Hay que tener cuidado que para otro subdominio que no sea www (por ejemplo subdominio.femisaluddigital.ney.uy) tal vez quiera acceder a otra sesión, no a la misma del dominio principal. Esto puede ser un problema y el proceso de guardar y pedir información de la sesión debería ser lo suficientemente inteligente como para distinguir casos, nada muy complicado.

Con este post espero ayudar a otros que tengan el mismo problema. Hay algunos comentarios sobre el tema en la página de documentación de PHP sobre las sesiones, donde también indica que ante un cambio de protocolo (HTTP a HTTPS) la sesión también es eliminada. http://us2.php.net/manual/en/book.session.php

miércoles, 8 de julio de 2009

Historia del User Agent

Navegando por internet buscando información acerca de HTTP (estoy estudiando para un próximo exámen de Introducción a las Redes de Computadoras), encontré un artículo muy interesante al respecto de la historia del User Agent que no tiene desperdicio alguno:

http://webaim.org/blog/user-agent-string-history/

Enjoy :)

sábado, 6 de junio de 2009

Feliz cumpleaños Tetris!

Hoy es un día muy especial para todos los amantes del Tetris, el legendario juego creado por Alexey Pajitnov. El juego combina agilidad, estrategia y simplicidad como ningún otro juego en la historia de los video juegos, por algo cuando decimos "Tetris" todos saben de que estamos hablando. Tetris es más que un juego, este trascendió la pantalla para convertirse en parte de la cultura de los que vivimos nuestra adolescencia en los 90's y aún hoy vivimos como un nuevo reto cada vez que volvemos a jugar al Tetris.

Desde aquí nuestro tributo.

Más información:
http://www.rtve.es/noticias/20090602/tetris-cumple-anos/279442.shtml

martes, 2 de junio de 2009

Liberamos la nueva versión de Yupp! v0.1.6.4

Estamos muy contentos de anunciar la liberación de la nueva versión de Yupp PHP Framework.

Estaos agradecidos con los usuarios que últimamente se han interesado en el proyecto, enviándonos sus comentarios, dudas y reportando errores, y es gracias a ellos que podemos seguir mejorando.

Hemos corregido y mejorado muchas cosas desde la versión anterior, entre ellas:

1. Se corrigió y mejoró el web flow.
2. Se agrego el metodo 'validateOnly' a la clase PersistentObject.
3. Correcciones para CRUD y vistas dinamicas.
4. Cambia el nombre de la clase ControllerFilter2 por YuppControllerFilter.
5. Se agregó addslashes en los métodos insert_query y update_query de DAL y stripslashes en PersistentManager, para resolver problemas con caracteres de control de MySQL.
6. Se agregó el helper "pager" para crear links de paginación de registros para los listados.
7. Se agrego el helper orderBy para crear columnas ordenables en los listados.
8. Corrección de restricción de email.
9. Ya no es necesario pasarle $this->params al método "render" de YuppController:
- Antes: return $this->render("show", &$this->params);
- Ahora: return $this->render("show");
10. Corrección del helper "locale_chooser" que generaba XHTML inválido.
11. Se agrega al paginador los params de ordenamiento por columnas en los listados (helper "orderBy") si los hay.


Descargas:

http://code.google.com/p/yupp/downloads/list
http://www.simplewebportal.net/host/1022.htm

TAG SVN:
http://code.google.com/p/yupp/source/browse/#svn/tags/v0164

Cualquier duda, consulta, crítica o reporte de error pueden hacerla en el grupo google (opción "debates > nueva entrada"):
http://groups.google.com/group/yuppframeworkphp


Hasta pronto!

Pablo Pazos Gutiérrez
Líder de proyecto
Yupp PHP Framework

jueves, 23 de abril de 2009

Como ser un buen programador

Este sitio presenta una guía paso a paso de cómo ser un buen programador :D

http://secretgeek.net/howtobeaprogrammer.asp

Que lo disfruten!

jueves, 2 de abril de 2009

Nueva versión de Yupp PHP Framework v0.1.6.3

En esta nueva versión estabilizamos aún más el framework, probándolo con distintas versiones de PHP. Además se corrigieron bugs y se mejoraron algunas características.

Este es el detalle del trabajo realizado:
  1. Corregido que si se crean urls con parametros llamados param_1, param_2, etc, esos se pongan en la propia url sin ?param_1&...

  2. Correccion de clase Filter, el metodo que procesa los params dependía de la cantidad de directorios en la ruta a donde está instalado Yupp Framework, ahora es independiente de donde se instale el framework.

  3. Se quitó devolver la referencia (&) en YuppSession::get porque da error cuando se devuelve NULL.

  4. Correción en clase Helpers: correccion de compatibilidad con PHP 5.2.8.

  5. Corregido el flash que se perdía cuando se hace redirect, los valores se mandan en la url.

  6. Resuelto un pequeño bug en la clase Logger.

  7. Se integró la funcionalidad de submit de forms via ajax, utiliza el plugin forms de jQuery.

  8. YuppDateTime: Se agrega operacion para manipular fechas.

  9. Nueva clase YuppForm2 que suplanta a YuppForm y acepta submit por ajax. Se deja YuppForm hasta la próxima liberación. Se agregó el campo "select" y la forma de pasarle los parámetros a los campos ahora es mediante un array asociativo, y los parámetros desconocidos son ingresados en la tag HTML generada como atributo de la misma.

  10. Se hicieron grandes modificaciones en cómo se definen y ejecutan los filtros de controladores, estos filtros sirven para definir acciones que se ejecutan antes o después de las acciones de los controladores según ciertas reglas (se pueden definir filtros por componente, por controlador, por accion, todas las acciones menos una, etc).

  11. Correccion de metodo PersistentObject.hasErrors, tenia un error en la condicion.

  12. Renombrado de archivo de arranque a components.{componente}.Bootstrap.script.php

  13. Correccion de bug en PersistentManager::generateAll(), se agregaban las restricciones para atributos que todavía no se habían agregado.


Notas de versión completas: http://code.google.com/p/yupp/wiki/YuppPHPFrameworkv0163

Para descargar esta versión se puede hacer directamente desde el sitio de google code o mediante el SVN:

Cualquier duda o sugerencia será bienvenida en nuestro grupo:

Para acceder a la última documentación:


A/C Pablo Pazos Gutierrez
Líder de Proyecto
Yupp PHP Framework

miércoles, 11 de marzo de 2009

Prototype vs jQuery


Navegando en internet encontré esta excelente presentación con la comparación de estos dos grandes de Javascript. Aquí se las dejo:



martes, 10 de marzo de 2009

Transformar errores y warnings de PHP en excepciones

Hoy estuve probando la funcionalidad de envío de email de PHP y como tenía el servidor de mail mal configurado en el PHP.INI, mi aplicación me mostraba un WARNING. El problema es que el WARNING no se tira como una excepción, o sea que no se le puede hacer TRY/CATCH, por lo tanto tuve que buscar como hacer para que estas WARNINGS se pudieran atrapar como cualquier excepción, el resultado es el siguiente:

En PHP existe una función llamada set_error_handler, la cual me permite establecer una función mía para manejar los errores de PHP (PHP tiene distintos tipos de errores y puedo definir distintos manejadores para cada tipo de error).

Entonces, para que todos los errores de PHP (incluyendo WARNINGS) sean enviados a mi manejador (para arrojar una excepción en su lugar) es implementado con el siguiente código:

set_error_handler("my_warning_handler", E_ALL);

function my_warning_handler($errno, $errstr, $errfile, $errline, $errcontext) {
throw new Exception( $errstr );
}

Seleccionando E_ALL, cualquier tipo de error es enviado a mi función para arrojar una excepción.

Los distintos tipos de errores que tiene PHP son:
  • E_ALL
  • E_WARNING
  • E_ERROR
  • E_PARSE
  • E_CORE_ERROR
  • E_CORE_WARNING
  • E_COMPILE_ERROR
  • E_COMPILE_WARNING
  • E_STRICT
Por más información sobre set_error_handler y manejo de errores en PHP:

Espero que les sirva.

viernes, 6 de marzo de 2009

Liberación de PHP v5.2.9

Aquí el link a la página oficial del anuncio:
http://www.php.net/releases/5_2_9.php

Aquí la página con los cambios por versión:
http://www.php.net/ChangeLog-5.php#5.2.9

sábado, 28 de febrero de 2009

Nueva versión de Yupp PHP Framework v0.1.6.2

Como anunciábamos ayer, hoy liberamos la versión 0.1.6.2 de Yupp PHP Framework.

Esta es una versión de estabilización, donde se corrigieron muchos bugs y se mejoraron algunas características. Este es el detalle del trabajo realizado:
  • Correccion en PersistentManager.generate() para que genere todas las tablas intermedias con la columna "ord" que se utiliza cuando el atributo hasMany es de tipo LIST, cuando es de tipo SET o COLLECTION, no se toma en cuenta.
  • Se agregó soporte para incluir CSS o imagenes desde un componente. Para esto se modificó el helper "css" y se agregó el helper "img".
  • Corrección al helper "errors", lanzaba un error si el elemento no tenía errores.
  • Correcciön al método "hasErrors" de PersistentObject, que no verificaba que el campo errors fuera NULL.
  • Se agrega el constructor para la condicion Not Equal a la clase Condition.
  • Correccion del metodo addOrder de la clase Criteria2.
  • Hay un problema con la extraccion de los parametro de la url: http://localhost:8081/YuppPHPFramework/portal/page/display/mi_pagina_bbb/sdfda/asdf?as=sdfg
    • El tema fue que al intriducir el tema del ruteo, UlrProcessing, quien antes hacia el trabajo de crear los params de la url, no se llama mas, y ahora el ruteo solo toma params de POST y GET y no considera la url.
  • Varias correcciones para compatibilizar Yupp con versiones anteriores de PHP (PHP 5.2.0 y 5.2.1).
  • Se agregó el método firstToUpper a core.basic.String.
  • Se agregaron los siguientes campos a la configuración de Yupp (clase YuppConfig):
    • currentMode: indica el modo de ejecucion de la aplicacion (development, production o testing).
    • modeDefaultMapping: indica que accion debe ejecutarse por defecto, dependiendo del modo actual, al acceder a la aplicación.
  • Se agregó el método addCustomParams en la clase routing.Filter

Notas de versión completas: http://code.google.com/p/yupp/wiki/YuppLiberacionV0162

Para descargar esta versión se puede hacer directamente desde el sitio de google code o mediante el SVN:

Cualquier duda o sugerencia será bienvenida en nuestro grupo:

Para acceder a la última documentación:


A/C Pablo Pazos Gutierrez
Líder de Proyecto
Yupp PHP Framework

Modificada la hoja de ruta hacia Yupp PHP Framework v0.2.0

Modificamos la hoja de ruta por la gran cantidad de problemas que detectamos, corregimos y otras cosas que agregamos. Mañana (sábado 28 de febrero) estaremos liberando la versión 0.1.6.2 del framework. Los últimos cambios ya están en el SVN del grupo de google: http://code.google.com/p/yupp/source/checkout.

La modificación fue correr todas las liberaciones 0.1.6.x y liberar como 0.1.6.2 el framework con las últimas correcciones, lo que consideramos un paso gigante en cuanto a estabilización del framework se trata.

Si bien esperamos que Yupp v 0.2.0 sea la primer liberación estable para producción, en este momento estamos utilizando Yupp en producción para un sistema de CMS muy simple, este sistema será liberado una vez completado con el nombre de Yupp Portal y apuntará a la generación de portales de forma rápida y 100% actualizable via web (cero código HTML/PHP para el usuario).

Pablo Pazos Gutierrez
Líder de proyecto
Yupp PHP Framework

------

Haz clic en http://groups.google.com/group/yuppframeworkphp/web/hoja-de-ruta-hacia-v0-2-0
Si haciendo clic no se activa, copia el enlace y pégalo en la barra de
direcciones de tu navegador.

jueves, 12 de febrero de 2009

Herramienta de SEO para generar urls amigables

Esta herramienta "URL Rewriting Tool" nos ayuda a generar urls amigables para que los buscadores puedan encontrar términos relacionados con el tema del sitio en la url, lo que ayuda a que nuestro sitio se posicione mejor en los resultados del buscador.

Con URL Rewriting Tool podemos generar desde una url dinámica, una url que parece estática y a su vez genera la regla de MOD_REWRITE que consume esa url e internamente genera el pedido a la url dinámica.

Dejo el link: http://www.webconfs.com/url-rewriting-tool.php

Feliz url rewriting!

miércoles, 4 de febrero de 2009

PHP 5.3.0 ahora esta en beta!

Esta beta de PHP 5.3.0 anticipa que dentro de poco tendremos la liberación de la versión estable 5.3.0 de PHP, la cual trae nuevas (y esperadas hace mucho tiempo) características.

Las características más importantes de PHP 5.3.0 son:
  • Soporte para namespaces, un viejo problema de PHP, para esto se agrega la keyword "use".
  • Soporte para cláusulas (o funciones lamda).
  • Soporte de "Late Static Bindings", mejora la POO (mejora herencia y polimorfismo. que en realidad es como funciona cualquier otro lenguaje OO). Sobre esta característica hice un post hace tiempo: http://yuppframework.blogspot.com/2008/03/problemas-al-acceder-al-nombre-de-la.html
  • Driver nativo para MySQL, ya no será una extensión.
  • Soporte para constantes de clase.
Dejo algunos links para completar la informacion:

viernes, 30 de enero de 2009

Liberación de estabilización Yupp Framework PHP v0.1.6.1

Esta es una versión de estabilización de la versión 0.1.6 de Yupp PHP Framework, la cual contiene pequeños cambios y correcciones con respecto a v0.1.6.
  1. Agregado de la verificación de existencia de una vista y de un layout, que en caso de no existir, se lanza una excepción que es mostrada de forma amigable al usuario.

  2. Correcciones y ampliacion de funcionalidades de la clase YuppForm para generar formularios en las vistas.

  3. Se modifico el helper JS para que pueda tomar javascripts de componentes particulares, ahora acepta un nuevo parámetro "component" que es el nombre del componente dentro del cual está alojado el archivo javascript a incluir en la vista.
Descargas: http://code.google.com/p/yupp/downloads/list

Por consultas o sugerencias: http://groups.google.com/group/yuppframeworkphp
Documentación: http://www.simplewebportal.net/host/1021.htm

jueves, 8 de enero de 2009

Nueva versión de Yupp PHP Framework

Tengo el agrado de anunciar la liberación de la nueva versión de Yupp PHP Framework.

En su versión 0.1.6, Yupp Framework presenta los siguientes agregados:
  1. Se agregaron tipos para los atributos hasMany, ahora se pueden generar con tipos LIST, COLECTION o SET. Con LIST, los elementos en la colección se mantienen ordenados, esto se logra almacenando un nuevo atributo "ORD" que guarda el lugar del elemento en la lista. COLECTION es el comportamiento por defecto, no concerva orden y se permiten repetidos. SET es una colección donde no se permiten elementos repetidos. Estamos pensando en agregar el tipo ORDERED_SET donde no se permitan repetidos y se concerve el orden (se comporta como SET y como LIST).
  2. Se agregó una pantalla de administración en donde:

    • Permite generar las tablas para el modelo de datos existente (de todos los componentes).

    • Permite ejecutar el script de bootstrap de cada componente (este script es donde se inicializan los datos que el componente necesita en la base de datos).

    • Permite ingresar a los controladores existentes (igual que en v0.1.5)

    • Permite ver estadísticas de líneas de código del framework, totales y por clase.


  3. Se realizaron pruebas con "custom validators" que son validadores de datos o restricciones que se pueden poner sobre los atributos de las clases del modelo de datos, y que pueden ser creadas por el usuario y no están ya implementadas en Yupp. En el archivo "blog.model.Usuario.class.php" se agregó la declaración de una clase "EmailsStartsWithName", la cual es una restricción agregada por el usuario para validar que el atributo"email" empiece con el nombre del usuario, que está en el atributo "nombre". De la misma forma se puede crear cualquier otro "custom validator". Agregaremos una guía de esto a la documentación: http://www.simplewebportal.net/yupp_framework_php_doc/


Página de descargas: http://code.google.com/p/yupp/downloads/list
Documentación: http://www.simplewebportal.net/yupp_framework_php_doc/
Grupo Google: http://groups.google.com/group/yuppframeworkphp/