Diferencia entre revisiones de «Cambios Pendientes Spirit»
De KumbiaPHP Framework Wiki
(→Beta 2) |
|||
(No se muestran 109 ediciones intermedias de 6 usuarios) | |||
Línea 1: | Línea 1: | ||
== Cambios Pendientes KumbiaPHP versión 1.0 Spirit== | == Cambios Pendientes KumbiaPHP versión 1.0 Spirit== | ||
− | * Terminar la nueva bienvenida | + | * <s>Terminar el scaffold</s> |
+ | * Crear la web de Kumbiaphp con Kumbiaphp | ||
+ | * Usar nuevo diseño y logo para todos los sitios | ||
+ | * Tener siempre en cuenta: | ||
+ | ** KISS | ||
+ | ** Convención sobre configuración | ||
+ | ** Velocidad | ||
+ | |||
+ | ==Beta 2== | ||
+ | * Verificar la lib Auth | ||
+ | * Libreria filter | ||
+ | * Cambiar el uso deñ mod_rewrite por el de PATH_INFO | ||
+ | * Poner deprecated la antigua lib REST y cambiarla por un controller | ||
+ | * Añadir templates con distintos formatos (PDF, CVS, JSON, XML...) | ||
+ | * <s>Terminar el scaffold (90% listo)</s> | ||
+ | * Consola que ayude a crear los scaffols estaticos | ||
+ | * Consola añadir para crear los ficheros de gettext | ||
+ | * Crear una nueva lib Report | ||
+ | * Dejar el Auth libre, para poder añadir más tipos de auth | ||
+ | * Repasar y/o actualizar todas las libs | ||
+ | * <s>Cambio de autocarga usando POST, (que pasa?)</s> | ||
+ | * <s>Cambiar los 2 eregi del active record antiguo</s> | ||
+ | * Convención de model.field | ||
+ | * <s>Revisar js-calendar</s> | ||
+ | * <s>Separar Db y ActiveRecord en 2 libs</s> | ||
+ | * <s>Cambiar Load en métodos models y model</s> | ||
+ | * <s>Cambiar mode_base.php => active_record.php</s> | ||
+ | |||
+ | ==Views== | ||
+ | * <s>templates, partials y errors por _shared y ponerlos dentro o no se pueden usar esos nombres para controllers</s> | ||
+ | * <s>en View para usar el set_response tambien usar _xxx. ejemplo: views/controller/_rss/action</s> | ||
+ | * Proposicion crear tambien un dir default(u otro nombre) dentro del _shared, para tener views por defecto si no existe para esa accion en su dir views/controller/action.(debe tener un atributo el controller para habilitarlo por seguridad) | ||
+ | |||
+ | Por ejemplo si no tiene index.php cargar el shared/default/index.phmtl si existe. Otro, un xml.phtml que podria usar cualquier accion de cualquier controller. | ||
+ | |||
+ | ==ActiveRecord== | ||
+ | * <s>Eliminar ereg, eregi, ereg_xxx del codigo</s> | ||
+ | * <s>El paginate debe enviar exception si se le pasa valor negativo y evitar la llamada a bd</s> | ||
+ | * <s>Tambien el paginate debe enviar exception si despues de la consulta no existe esa pag</s> | ||
+ | * <s>Ahora los modelos llevaran el include_once arriba para la clase que necesiten</s> | ||
+ | * Las validaciones no deben usar el Flash al no validar | ||
+ | * Añadir método estático al AR para llamar a stored procedures | ||
+ | * Mirar si podemos pasarle algo del nuevo ActiveRecord | ||
+ | * Intentar añadir with: | ||
+ | * (Behaviors) | ||
+ | * Si lo podemos aligerar un poco, mejor | ||
+ | * Intentar añadir metodos estaticos, por si usan php 5.3 que lo aprovechen. (internamente ese metodo comprobara la version de PHP) | ||
+ | * <s>Eliminar exception de la clase</s> | ||
+ | * <s>Cambiado models_autoload a Off en el config.ini. Ademas era una mala practica</s> | ||
+ | * <s>Posibilidad de quitar el models_autoload del config.ini. Eso lo puede hacer el usuario en el initialize añadir Load::models()</s> | ||
+ | * (Los callabacks deben ser protected) | ||
+ | * (Crear convencion _up en activeRecord para upload de archivos.) | ||
+ | |||
+ | ==Helpers== | ||
+ | * <s>(Crear alias e para el echo, igual como ahora el h para htmlspecialchars)</s> | ||
+ | * <s>Este es mejor: | ||
+ | crear alias eh para que haga las 2 cosas de un golpe, el echo y el htmlspecialchars. Podemos escoger otro nombre para este alias. | ||
+ | ejemplo: | ||
+ | <pre> | ||
+ | <h1><?php eh($model->campo) ?></h1> | ||
+ | </pre></s> | ||
+ | |||
+ | * Ya que los nuevos hepers son clases, poder cambiar los dirs de js, img, css,.... Via atributos. Más que nada para poder tenerlos en subdominio, si uno quiere. | ||
+ | * <s>Partials paginators si van al page 1 no deben enviar el 1, solo el path</s> | ||
+ | |||
+ | ==Router== | ||
+ | * <s>Quitar el redirect del controller y pasarlo al router,</s> tambien que pueda pasar el 301, 302,... si no usa tiempo. | ||
+ | * <s>Quitar de atributos el all_parameters y el id (id no es necesario y si alguien lo quiere $parameters[0])</s> | ||
+ | * (Optimizarlo) | ||
+ | * <s>Cambiar routes.ini para evitar el bug que tiene php 5.3</s> | ||
+ | * poder pasar parametros usando el routes.ini | ||
+ | |||
+ | * <s>Poder usar el Flash via session, + cualquier salida (no es del router pero el cambio es debido al enrutar)</s> | ||
+ | * Obtener la URL completa incluyendo el dominio.(con esto ademas podriamos usar routes relativas y absolutas) | ||
+ | * Manejo de rutas estáticas para subdominios. (Posiblemente sea mejor usar el .htaccess) | ||
+ | |||
+ | ==Dispatcher== | ||
+ | * Intentar eliminar el get_controller() | ||
+ | |||
+ | ==Exception== | ||
+ | * <s>Arreglar la exception por si hay espacios en el trace</s> | ||
+ | * Cambiar los path separators(win)en el trace | ||
+ | * Poder enviar en el throw el tipo de error (404,500,501,....) | ||
+ | * Añadir boton listar ficheros, debajo de xx files includes. (Posible que salga via jquery). Separados por: | ||
+ | ** Includes app | ||
+ | ** Includes Core | ||
+ | ** Includes Exception | ||
+ | * (Mirar donde podemos usar mas Try y Catch de exceptions, y poder quitar validaciones.) | ||
+ | |||
+ | ==Recordar== | ||
+ | * Intentar standarizar el sistema de drivers o adapters (db adapters, cache drivers, sesion drivers, auth ...) | ||
+ | * Mejorar la cache | ||
+ | * Crear una clase debug o algo parecido | ||
+ | para manejar la salida a html, log, ... | ||
+ | * Crear views para el logger. Asi se puede crear el formato del logger, por ejemplo: apache log, ... | ||
+ | * <s>Y si quitamos el constructor del controller??? por seguridad y ponemos este y un par mas como private vacios.</s> | ||
+ | * Posibilidad de crear un php en el dir de CORE para que devuelva la version y su path.(esto para que se pueda poner en bin, por ejemplo) | ||
+ | * Crear plantilla para partials, helpers, ... (Autor, categoria, descripcion,...) | ||
+ | * Crear boceto para sistema de plugins(mini apps) | ||
+ | * <s>Considerar HomeController como controller por defecto (mostraria la bienvenida tb) sin usar routes.ini</s> | ||
+ | * Considerar admin o backend modulo por defecto con auth | ||
+ | * Intentar poder usar el auth por defecto, si existe la tabla usuarios y usar el http auth.(convencion sobre configuaracion) | ||
+ | * Quitar o cambiar los vendors por nuevos | ||
+ | * Posible cambio en pages, en vez de show usar el index. Asi funcionaria example.com/pages/xxx | ||
+ | * Tambien se puede añadir en pages un metodo secret o secure que miraria primero el auth | ||
+ | * Mejorar el config class | ||
+ | |||
+ | == JavaScript == | ||
+ | * <s>Eliminar las caracteristicas obsoletas del código heredado</s> | ||
+ | |||
+ | ==Antiguo beta1== | ||
+ | * <s>Terminar la nueva bienvenida</s> | ||
* <s>Cuando se lanzan las excepciones en ocasiones no se cargan los estilos</s> | * <s>Cuando se lanzan las excepciones en ocasiones no se cargan los estilos</s> | ||
− | * Terminar que el kumbia exception se encargue de mostrar views para la salida de errores (diferentes en desarrollo y en producción ) | + | * <s>Terminar que el kumbia exception se encargue de mostrar views para la salida de errores (diferentes en desarrollo y en producción )</s> |
+ | * <s>Crear session en dispatcher solo si el controller es persistente</s> | ||
+ | * <s>Mover la carga del tags.php y use_helper('main') al get_view()</s> | ||
+ | * <s>Si no usa ni template ni view, validarlo antes de llamar al get_view()</s< | ||
* Cambiar en los callbacks de ActiveRecord el '''return 'cancel'''' por un bool es mejor hacer '''return false''' | * Cambiar en los callbacks de ActiveRecord el '''return 'cancel'''' por un bool es mejor hacer '''return false''' | ||
* <s>Mover el application controller del dir controllers al dir de la app</s> | * <s>Mover el application controller del dir controllers al dir de la app</s> | ||
Línea 10: | Línea 124: | ||
* <s>Cambiar enviroment.ini por databases.ini</s> (lo suyo seria que tuviese el db_date del config.ini y si es posible añadir uno para el charset de la db) | * <s>Cambiar enviroment.ini por databases.ini</s> (lo suyo seria que tuviese el db_date del config.ini y si es posible añadir uno para el charset de la db) | ||
* Cambiar los if(file_exists por if(!include $file) { throw new KumbiaException..... (o mejor con un try, si es posible) | * Cambiar los if(file_exists por if(!include $file) { throw new KumbiaException..... (o mejor con un try, si es posible) | ||
− | * Crear un dir temp (para poner dentro el de cache y el de logs) | + | * <s>Crear un dir temp (para poner dentro el de cache y el de logs)</s> |
* <s>Cambiar, si es posible el mode de config.ini para que sea production = on | off</s> | * <s>Cambiar, si es posible el mode de config.ini para que sea production = on | off</s> | ||
* <s>Quitar del config.ini la configuracion de directorios</s> | * <s>Quitar del config.ini la configuracion de directorios</s> | ||
* <s>Necesitamos un metodo para la carga selectiva de modulos (como la de modelos)</s> | * <s>Necesitamos un metodo para la carga selectiva de modulos (como la de modelos)</s> | ||
* <s>Quitar el extends object en las clases que no lo necesitan (posiblemente no la necesita ninguna)</s> | * <s>Quitar el extends object en las clases que no lo necesitan (posiblemente no la necesita ninguna)</s> | ||
− | * Quitar el join_path y donde se use | + | * <s>Quitar el join_path y donde se use</s> |
* <s>Solucionar el problema de los headers</s> | * <s>Solucionar el problema de los headers</s> | ||
* <s>Integrar la nueva cache</s> | * <s>Integrar la nueva cache</s> | ||
Línea 45: | Línea 159: | ||
:Y si es posible, mejor sólo un array sin nombre con los items. | :Y si es posible, mejor sólo un array sin nombre con los items. | ||
* El active record debe crear el objecto de un golpe ( $items[] = (obj) $array_row ) | * El active record debe crear el objecto de un golpe ( $items[] = (obj) $array_row ) | ||
− | * El controller debe hacer el sanitize del get, post y request y no el active record | + | * <s>El controller debe hacer el sanitize del get, post y request y no el active record</s> |
− | * Las variables que inicializa al principio Kumbia::main() deberia crear constantes | + | * <s>Las variables que inicializa al principio Kumbia::main() deberia crear constantes |
Sera más fácil de leer el código y podremos quitar código que sólo pasa esas variables, | Sera más fácil de leer el código y podremos quitar código que sólo pasa esas variables, | ||
asi como las variables de objeto, usando menos memoria. | asi como las variables de objeto, usando menos memoria. | ||
Línea 52: | Línea 166: | ||
MODELS, CONTROLLERS, LIBS, VIEWS, HELPERS | MODELS, CONTROLLERS, LIBS, VIEWS, HELPERS | ||
− | Y si es un módulo, ya se creara aqui el directorio correctamente (posible problema con el route_to, hay que mirarlo) | + | Y si es un módulo, ya se creara aqui el directorio correctamente (posible problema con el |
+ | route_to, hay que mirarlo)</s> |
Revisión actual del 01:59 29 jun 2013
Sumario
Cambios Pendientes KumbiaPHP versión 1.0 Spirit
Terminar el scaffold- Crear la web de Kumbiaphp con Kumbiaphp
- Usar nuevo diseño y logo para todos los sitios
- Tener siempre en cuenta:
- KISS
- Convención sobre configuración
- Velocidad
Beta 2
- Verificar la lib Auth
- Libreria filter
- Cambiar el uso deñ mod_rewrite por el de PATH_INFO
- Poner deprecated la antigua lib REST y cambiarla por un controller
- Añadir templates con distintos formatos (PDF, CVS, JSON, XML...)
Terminar el scaffold (90% listo)- Consola que ayude a crear los scaffols estaticos
- Consola añadir para crear los ficheros de gettext
- Crear una nueva lib Report
- Dejar el Auth libre, para poder añadir más tipos de auth
- Repasar y/o actualizar todas las libs
Cambio de autocarga usando POST, (que pasa?)Cambiar los 2 eregi del active record antiguo- Convención de model.field
Revisar js-calendarSeparar Db y ActiveRecord en 2 libsCambiar Load en métodos models y modelCambiar mode_base.php => active_record.php
Views
templates, partials y errors por _shared y ponerlos dentro o no se pueden usar esos nombres para controllersen View para usar el set_response tambien usar _xxx. ejemplo: views/controller/_rss/action- Proposicion crear tambien un dir default(u otro nombre) dentro del _shared, para tener views por defecto si no existe para esa accion en su dir views/controller/action.(debe tener un atributo el controller para habilitarlo por seguridad)
Por ejemplo si no tiene index.php cargar el shared/default/index.phmtl si existe. Otro, un xml.phtml que podria usar cualquier accion de cualquier controller.
ActiveRecord
Eliminar ereg, eregi, ereg_xxx del codigoEl paginate debe enviar exception si se le pasa valor negativo y evitar la llamada a bdTambien el paginate debe enviar exception si despues de la consulta no existe esa pagAhora los modelos llevaran el include_once arriba para la clase que necesiten- Las validaciones no deben usar el Flash al no validar
- Añadir método estático al AR para llamar a stored procedures
- Mirar si podemos pasarle algo del nuevo ActiveRecord
- Intentar añadir with:
- (Behaviors)
- Si lo podemos aligerar un poco, mejor
- Intentar añadir metodos estaticos, por si usan php 5.3 que lo aprovechen. (internamente ese metodo comprobara la version de PHP)
Eliminar exception de la claseCambiado models_autoload a Off en el config.ini. Ademas era una mala practicaPosibilidad de quitar el models_autoload del config.ini. Eso lo puede hacer el usuario en el initialize añadir Load::models()- (Los callabacks deben ser protected)
- (Crear convencion _up en activeRecord para upload de archivos.)
Helpers
(Crear alias e para el echo, igual como ahora el h para htmlspecialchars)Este es mejor:
crear alias eh para que haga las 2 cosas de un golpe, el echo y el htmlspecialchars. Podemos escoger otro nombre para este alias. ejemplo:
<h1><?php eh($model->campo) ?></h1>
- Ya que los nuevos hepers son clases, poder cambiar los dirs de js, img, css,.... Via atributos. Más que nada para poder tenerlos en subdominio, si uno quiere.
Partials paginators si van al page 1 no deben enviar el 1, solo el path
Router
Quitar el redirect del controller y pasarlo al router,tambien que pueda pasar el 301, 302,... si no usa tiempo.Quitar de atributos el all_parameters y el id (id no es necesario y si alguien lo quiere $parameters[0])- (Optimizarlo)
Cambiar routes.ini para evitar el bug que tiene php 5.3- poder pasar parametros usando el routes.ini
Poder usar el Flash via session, + cualquier salida (no es del router pero el cambio es debido al enrutar)- Obtener la URL completa incluyendo el dominio.(con esto ademas podriamos usar routes relativas y absolutas)
- Manejo de rutas estáticas para subdominios. (Posiblemente sea mejor usar el .htaccess)
Dispatcher
- Intentar eliminar el get_controller()
Exception
Arreglar la exception por si hay espacios en el trace- Cambiar los path separators(win)en el trace
- Poder enviar en el throw el tipo de error (404,500,501,....)
- Añadir boton listar ficheros, debajo de xx files includes. (Posible que salga via jquery). Separados por:
- Includes app
- Includes Core
- Includes Exception
- (Mirar donde podemos usar mas Try y Catch de exceptions, y poder quitar validaciones.)
Recordar
- Intentar standarizar el sistema de drivers o adapters (db adapters, cache drivers, sesion drivers, auth ...)
- Mejorar la cache
- Crear una clase debug o algo parecido
para manejar la salida a html, log, ...
- Crear views para el logger. Asi se puede crear el formato del logger, por ejemplo: apache log, ...
Y si quitamos el constructor del controller??? por seguridad y ponemos este y un par mas como private vacios.- Posibilidad de crear un php en el dir de CORE para que devuelva la version y su path.(esto para que se pueda poner en bin, por ejemplo)
- Crear plantilla para partials, helpers, ... (Autor, categoria, descripcion,...)
- Crear boceto para sistema de plugins(mini apps)
Considerar HomeController como controller por defecto (mostraria la bienvenida tb) sin usar routes.ini- Considerar admin o backend modulo por defecto con auth
- Intentar poder usar el auth por defecto, si existe la tabla usuarios y usar el http auth.(convencion sobre configuaracion)
- Quitar o cambiar los vendors por nuevos
- Posible cambio en pages, en vez de show usar el index. Asi funcionaria example.com/pages/xxx
- Tambien se puede añadir en pages un metodo secret o secure que miraria primero el auth
- Mejorar el config class
JavaScript
Eliminar las caracteristicas obsoletas del código heredado
Antiguo beta1
Terminar la nueva bienvenidaCuando se lanzan las excepciones en ocasiones no se cargan los estilosTerminar que el kumbia exception se encargue de mostrar views para la salida de errores (diferentes en desarrollo y en producción )Crear session en dispatcher solo si el controller es persistenteMover la carga del tags.php y use_helper('main') al get_view()Si no usa ni template ni view, validarlo antes de llamar al get_view()</s<- Cambiar en los callbacks de ActiveRecord el return 'cancel' por un bool es mejor hacer return false
Mover el application controller del dir controllers al dir de la appMover el model base tambien al dir de la appEl application debe extender del controller base de kumbia libs (ahora esta al reves)Cambiar enviroment.ini por databases.ini(lo suyo seria que tuviese el db_date del config.ini y si es posible añadir uno para el charset de la db)- Cambiar los if(file_exists por if(!include $file) { throw new KumbiaException..... (o mejor con un try, si es posible)
Crear un dir temp (para poner dentro el de cache y el de logs)Cambiar, si es posible el mode de config.ini para que sea production = on | offQuitar del config.ini la configuracion de directoriosNecesitamos un metodo para la carga selectiva de modulos (como la de modelos)Quitar el extends object en las clases que no lo necesitan (posiblemente no la necesita ninguna)Quitar el join_path y donde se useSolucionar el problema de los headersIntegrar la nueva cacheEliminar toda la vieja cache en la clase kumbia y controllerAñadir cache a los partialsHacer la clase logger estática- Añadir mas información a los log (estilo apache)
- Habilitar archivos log vía rss
- Habilitar una opción vía config.ini para enviar un mail con los log, contendría el mail del admin.
- Cuando la APP este en producción las excepciones deben ir a un log o rss(si esta habilitado). Y enviar un error 500
Añadir locale al config.iniMejorar la carga de clases del boot.iniMover la carga del standard form al boot.ini- Utilizar el filter_var de PHP en la clase filter. Y en el sanitize y validate de models
Terminar y limpiar el pages controllerUsar el pages controller para visualizar la bienvenida y ponerlo en el routes.ini- La clase xml debe cargarse cuando se necesita y después hacer un exit()
Añadir variable $view al controller para evitar bug y limpiar codigo del render del controller- Rehacer el Router::route_to
Arreglo de los validadores de ActiveRecord.Quitar de los validadores de ActiveRecord el llamado a $this->_connet() eso se ha de pasar al save() tomar como referencia al método validates_presence_ofHabilitar en el config.ini la carga de modelos (databases), esto para cuando se desee trabajar con o sin modelosAgregar al paginate de ActiveRecord el atributo count- El objeto devuelto por Active Record debe ser:
- Objeto ActiveRecord {
- array Metadata (con la metadata)
- array Items (con objetos stdObject)
- }
- Y si es posible, mejor sólo un array sin nombre con los items.
- El active record debe crear el objecto de un golpe ( $items[] = (obj) $array_row )
El controller debe hacer el sanitize del get, post y request y no el active recordLas variables que inicializa al principio Kumbia::main() deberia crear constantes
Sera más fácil de leer el código y podremos quitar código que sólo pasa esas variables, asi como las variables de objeto, usando menos memoria. Serian para los directorios: MODELS, CONTROLLERS, LIBS, VIEWS, HELPERS Y si es un módulo, ya se creara aqui el directorio correctamente (posible problema con el
route_to, hay que mirarlo)