Diferencia entre revisiones de «Cambios Pendientes Spirit»

De KumbiaPHP Framework Wiki
 
(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

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-calendar
  • Separar Db y ActiveRecord en 2 libs
  • Cambiar Load en métodos models y model
  • Cambiar mode_base.php => active_record.php

Views

  • templates, partials y errors por _shared y ponerlos dentro o no se pueden usar esos nombres para controllers
  • en 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 codigo
  • El paginate debe enviar exception si se le pasa valor negativo y evitar la llamada a bd
  • Tambien el paginate debe enviar exception si despues de la consulta no existe esa pag
  • Ahora 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 clase
  • Cambiado models_autoload a Off en el config.ini. Ademas era una mala practica
  • Posibilidad 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 bienvenida
  • Cuando se lanzan las excepciones en ocasiones no se cargan los estilos
  • Terminar 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 persistente
  • Mover 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 app
  • Mover el model base tambien al dir de la app
  • El 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 | off
  • Quitar del config.ini la configuracion de directorios
  • Necesitamos 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 use
  • Solucionar el problema de los headers
  • Integrar la nueva cache
  • Eliminar toda la vieja cache en la clase kumbia y controller
  • Añadir cache a los partials
  • Hacer 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.ini
  • Mejorar la carga de clases del boot.ini
  • Mover 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 controller
  • Usar 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_of
  • Habilitar en el config.ini la carga de modelos (databases), esto para cuando se desee trabajar con o sin modelos
  • Agregar 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 record
  • 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,
 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)