martes, 15 de enero de 2008

Amtfwm; uso de packages (propuesta)

Rediseño completo del framework, basado en packages:

Este es un especie de rediseño total del framework para utilizar una forma de organización mas avanzada y robusta, y a la vez, hasta conseguir un uso mas sencillo.

Hasta ahora el framework usa un sistema de tareas, y acciones, con una salida estandart y el uso de modulos y helpers aparte de las clases del sistema, esto si bien es sencillo de utilizar, puede traer problemas a futuro en la organización del framework.

Por ejemplo, las clases sql, sql_maker, abml_base y abml_basext son del sistema de abstración de datos, pero estan al mismo nivel que otras como logs, error_man y de más.

Esto tambien proboca la carga de clases incesesarias y una depuración de estas mas compleja.


La idea con esto es dividir la aplicación en packages, donde cada “paquete” tenga sus calses y funciones independientemente del proyecto, esto en php 4 es simplemente raro, pero creo que se puede hacer una buena integración si emular muchas cosas.

Por otro lado también se erradicaria la divición “common” y “tree”, pero sin tener unido el framework con el proyecto.

Otra idea muy importanto es hacer los packetes hijos de un una aplicación web, y que la “pagina web” en cuestion sea una aplicación corriendo dentro de esta.

Hasta ahora, el archivo index.php del tree, llama al application del common, en este caso estaria el “tree” adentro del common.

Aca estaria una descripción del funcionamiento:


Uso de packages, para framework PHP

Arbol de directorios:


[root (common)]
|--- [sys]
|--- [defs]
|--- [packages]
| |--- [nombre_del_packge]
| |--- [classes]
| |--- [functions]
| |--- [tasks]
|--- [local]
|--- [data]
| |--- [cache]
| |--- [logs]
| |--- [config]
| |--- [templates]
|--- [init]
|--- [packages]
|--- [nombre_del_packge]
|--- [classes]
|--- [functions]
|--- [tasks]

Y uno de los packages (obligatorio) adentro de local, seria “main” con las tasks que tendria una estructura asi:

|--- [packages]
|--- [main]
|--- [classes]
|--- main.php
|--- [functions]
|--- config.php
|--- [tasks]
|--- [webproj]
|--- [classes]
|--- main.php
|--- ejemplo_de_tarea.php
|--- [functions]
|--- config.php
|--- [tasks]


Este paquete sería simplemente el inicial, y su función seria definir que projecto será ejecutado, este seria un packete en local.

El packete “proyecto” funcionaría con los tasks, osea, en el “index” se encargaría de llamar al packete main, este decidirá a que proyecto se invoca, que es simplemente otro package el cual tambien contendrá un main, que será el que decida en base a sus calses que tarea tratará.

Cada tarea, por ejemplo, tendra su propio main, y su “destructor” o finalizador, a la vez, cada packete.

0 comentarios: