Cambios Pendientes Spirit

De KumbiaPHP Framework Wiki

Cambios Pendientes KumbiaPHP versión 1.0 Spirit

  • Terminar el scaffold
  • Crear la web de Kumbiaphp con Kumbiaphp
  • Tener siempre en cuenta:
    • KISS
    • Convención sobre configuración
    • Velocidad

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.)
  • Agregar el saneamiento de las instrucciones SQL para evitar el injection sql

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 (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

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)