Posteos etiquetados Buenas Prácticas
KumbiaPHP Tips: aprovecha el método initialize()
Ene 31
Desde hace días he estado por escribir pequeñas notas donde se pueda obtener el mayor provecho al momento de utilizar KumbiaPHP, en este primer post mencionaré como aprovechar uno de los callback de los que dispone KumbiaPHP en su versión 1.0 Codename Spirit y que he notado que muy pocos usuarios suelen aprovecharlo y/o utilizarlo.
Me refiero al método initialize() el cual actúa como un filtro y es ejecutado antes de cualquier Controlador que hayamos definido. Esto no es por casualidad recordemos que KumbiaPHP es un Framework Orientado a Objetos (POO), en pocas palabras el método initialize() esta definido en la class Controller, nosotros como desarrolladores solo debemos darle el comportamiento que queramos.
Para tener una idea mas clara imaginemos que tenemos un módulo (admin) y queremos que dicho módulo tenga un Template distinto al que hemos definido por defecto en toda la aplicación.
En el archivo [app]/application.php es donde debemos darle comportamiento al método initialize().
class ApplicationController extends Controller { public function initialize() { //verificamos que exista un módulo con nombre "admin" if(Router::get('module') == 'admin'){ //cambiamos el valor por defecto del template en caso que exista ese módulo $this->template = 'template_admin'; } } }
En el código anterior no hay nada esotérico y con esto hemos cambiado el comportamiento de todos nuestros controladores sin necesidad de ir de uno en uno y como esta podemos aplicar otras validaciones en ese punto de ejecución de nuestra aplicación
¿Que es un Modelo? – MVC
Dic 29
Una de las cosas que se aprecia constantemente entre las comunidades de desarrolladores, es la vaga idea que suele existir sobre el manejo del MVC donde solo se tiene en mente el concepto de wikipedia y demas sitios donde se conceptualiza sobre el tema.
Resulta bastante difícil, de acuerdo a mi experiencia y el roce que he tenido con personas del área, ir de la teoría a la implementacion del concepto de lo que es MVC parece ser una camino ofuscado en el que muchos se pierden. La gran mayoría suele decir “estoy claro en lo es MVC…”, pero cuando se ve la aplicabilidad se termina dando cuenta que lo que dijó “estoy claro…” es inversamente proporcional.
Filosofía de un Modelo
Estos son “Lógica de Negocio” y son parte fundamental para el momento que se desarrolla una aplicación, un buen uso de estos nos permiten un gran poder al momento que se necesita escalar, mantener y rehusar código en una aplicación.; es un concepto muy simple, pero la complicacion esta en comprender lo que significa “Logica de Negocio” ya que muchos piensan que la única forma de tener “Lógica de Negocio” va extrecha y unicamente relacionada con una conexión de Base de Datos y esto no es asi!
Lee el resto del articulo »
No te confies de todo lo que dice el manual de PHP
May 17
Hace unos días haciendo unos benchmark a kumbiaphp framework en comparación con la vieja estructura de directorios de alguna para ver si la nueva estructura directorio genero efectos de rendimientos sobre el framework que seria lo ideal.
Bien lo cierto es que cuando se corrió el benchmark los #request/seg no cuadraban y no era lógico ya que la nueva estructura se depuraron ciertas cosas que sobraban, en el benchmark los números obtenidos eran tan locos que la vieja estructura tenia unos 10 #req/seg por encima :-S no era nada normal esto, nos toco recurrir a las buenas prácticas de desarrollo y que ya es una constante dentro del Equipo de Desarrollo de kumbiaphp hacer debug y profiler con xdebug :-), esto para detectar donde estaban los “cuellos de botellas” que nos hacían mas lento que la versión anterior.
El detalle estaba en una función de PHP llamada extract, dentro de kumbiaphp framework se utiliza esta dicha función en el core ya que el framework implementa las variables de instancia (algo muy parecido de Rails), es decir todo lo que llame en mi controlador $this->var o sean atributos públicos, en la vista los tengo disponible como $var, volviendo al punto esta funcion nos permite hacer lo antes dicho pero recibe ciertos parámetros uno es unas constantes entre ellas EXTR_OVERWRITE (Si hay colisión, sobrescribe la variable existente) nosotros decidimos sacar la constante porque en la documentación Oficial de PHP dice claro lo siguiente:
Si no se especifica tipo_extraccion , se asume que vale EXTR_OVERWRITE.
Bien como sabemos el xdebug nos da mucha información y la misma nos decía que el “cuello de botella” estaba allí ya que tomamos un profiler de la versión anterior y los tiempos eran totalmente distintos en ese punto. viendo en detalle la función extract decidí olvidar lo que dice el manual de PHP y pasar de forma implícita el tipo de extracción en este caso EXTR_OVERWRITE, una vez hecho el cambio vuelvo a correr el benchmark y como por arte de magia ahora obtengo los resultados esperados la nueva estructura ha causado efecto en velocidad y esta ~10 #req/seg por encima respecto a la vieja estructura.
Conclusión.
Tal como dice el titulo del post no hay que confiarse de lo que dicen algunos manual, ya que pueden ocurrir excepciones como la que comente aqui. En el caso descrito fue detectado este detalle porque se hizo uso de las buenas prácticas de desarrollo y de las herramientas disponibles y el turno fue para una que muchos obvian (xdebug), que si le damos el uso correcto podemos ganar mucho en nuestros desarrollos.
Filter un misterio de PHP.
Feb 16
Todas las aplicaciones (Web, Escritorio, Consola) dependen que datos externos para crear una salida o iniciar un proceso, estos datos pueden venir desde un usuario u otra aplicación (WebService, formulario, etc…) por eso la premisa #1 de todo desarrollador debe:
Filtrar todos los datos externos
El filtrado de datos es una de las piedras angulares en cualquier aplicación en el tema de seguridad, independientemente del lenguaje donde se trabaje. PHP proporciona una amplia gama de herramientas y funciones para filtrar o validar los datos, pero a diferencia de otros lenguajes, no tiene funciones estándar para filtrar los datos (como cgi de perl).
La extensión Filter llena este vacío y viene a suplir muchas expresiones regulares que son extremadamente lentas para validar formatos y datos de entradas, estas son muchas de las bondades de PHP que muchos desarrolladores no suelen utilizar y que vienen a ser parte de las buenas practicas de desarrollo sobre este lenguaje.
Lee el resto del articulo »
Entendiendo el Modelo Orientado a Objeto de PHP :-)
Nov 1
Dejo una presentación que considero excelente y ayudara aclarar muchas dudas en cuanto al modelo de POO de PHP ya que veo que existe un gran desconocimiento a nivel general y que escala a niveles bien altos en torno a este tema, la invitación es que vayamos a nuevas practicas de desarrollo y dejemos atrás la vieja escuela de esa programación estructurada que no permite que PHP avance como un lenguaje mas serio respecto a otros y esto es producto de los mismo desarrolladores.







Comentarios Recientes…