sábado, noviembre 22, 2008

PHP OBject Genetator Extended

Estoy trabajando en un nuevo proyecto en PHP http://www.digitalizarte.com/pogex/ esta basado en es el proyecto http://www.phpobjectgenerator.com/ el cual recomiendo como punto de partida para cualquier desarrollo en PHP que necesite tener acceso a bases de datos.
La modificaciones que realice y planeo hacer sobre el POG son sobre el modelo de los objetos, extendí la "metadata" ( la variable $pog_attribute_type ) que traen los objeto para poder modificar el comportamiento en tiempo de ejecución de los objetos. El desarrollo lo centre en las plantillas de php 5.1 + PDO MySQL, no creo que mantenga la compatibilidad con la versión de php 4 en el POGEx pues muchas de las nuevas funcionalidades no se pueden implementar por limitación de la versión ( o eso creo yo).

1. Limitar el acceso y la asignación a los atributos de la clases. Se pueden definir atributos de lectura, atributos de asignación solamente. Si se limita la el acceso o la asignación las variables pasan a ser privadas y se acceden mediante __get() y __set().

2. Encriptación a nivel de campo, no esta implementado aun, tengo que decidir que libreria y que algoritmo voy a utilizar, es solo para los campos de texto.

3. Definir si el campo se graba en la base de datos al momento de realizar el insert y al momento de grabar el objeto.

4. Definir un valor predeterminado a nivel PHP y a nivel Base de datos.

5. Lazy Load: Cargar los campos minimos y necesarios, y el resto cargar cuando se necesite, el atributo se declara con una variable privada y se accede mediante __get() y __set(). Se detecta automaticamente que se trata de un atributo LazyLoad, se verifica si ya fue cargado o se realiza la consulta a la base de datos.

6. Posibilidad de acceder y asignar valores a los attributos sin importar como fue escrito el nombre. MAYUSCULAS, minusculas o un MixDeAmbos.

echo $obj->NombreApellido;
echo $obj->NOMBREAPELLIDO;
echo $obj->nombreapellido;

$obj->NombreApellido = "Damian Eiff";
$obj->NOMBREAPELLIDO = "Damian Eiff";
$obj->nombreapellido = "Damian Eiff";

El atributo es NombreApellido internamente resuelve el tema de las mayúsculas o minúsculas, se aplican igualmente todas las reglas que se definieron previamente al objeto. Getter / Setter. LazyLoad. La idea es minimizar los errores estúpidos de sintaxis (Los cuales comento muy seguido).

A futuro.

7 Definir si un campo esta indexado.

8. Extender el método Get( $id ), para que cargue los campos que se le pida.
Get( $id, $acampos = array() )

9. Extender el método GetList(), para que soporte orden por mas de una columna, siempre me pregunte porque el order by era por una sola columna.

10. Nuevo Método GetListEx() Se puede indicar que campos se quieren cargar en la consulta.


El proyecto tiene el mismo tipo de licencia que POG
@copyright Free for personal & commercial use. (Offered under the BSD license)

El código fuente lo voy a publicar a la brevedad.

No hay comentarios.:

Acerca de mí

Mi foto
Ciudad Autónoma de Buenos Aires, Buenos Aires, Argentina

Buscar este blog