UNIVERSIDAD POLITÉCNICA DE SINALOA PROGRAMA ACADÉMICO DE
INGENIERÍA EN INFORMÁTICA
Tesina
“Análisis de características de los framework de desarrollo en PHP más
populares para la elaboración de sistemas de información WEB.”
Para cumplir la acreditación de las estadías profesionales y contar con los créditos necesarios para obtener el grado de Ingeniero en Informática
Autor:
Jorge Iván Ramírez Osuna
Asesor:
Dr. Rodolfo Ostos Robles
Asesor OR:
Ing. Javier Eduardo Anguiano Guerrero
Mazatlán, Sinaloa. 15 de diciembre de 2017
2
3
4
5
6
Agradecimientos. Primeramente, quiero agradecer a la Universidad Politécnica de Sinaloa (UPSIN) por
haberme aceptado ser parte de ella y abierto las puertas de sus aulas para poder
estudiar la carrera Ingeniería en Informática, así como también a los docentes que
brindaron sus conocimientos, consejos, apoyo, y que estuvieron involucrados en mi
desarrollo como estudiante e ingeniero.
Agradezco también a mi asesor de tesina el Dr. Rodolfo Ostos Robles por
haberme facilitado la oportunidad de recurrir a su tiempo, capacidad, y conocimiento
científico, así como su guía durante el proceso de desarrollo de la tesina.
Mi agradecimiento también va dirigido al Ing. Javier Eduardo Anguiano
Guerrero, Líder de Proyectos de la empresa SOLEMTI, y a todo el equipo involucrado
durante el periodo de estadías, por haber brindado su apoyo, y aceptado tenerme
como practicante durante el tiempo establecido de prácticas profesionales.
Finalmente, agradezco también a todas las personas involucradas,
principalmente mi familia y mi novia, posteriormente a mis amigos, colegas y
compañeros que estuvieron a lo largo de todos los niveles de Universidad ya que han
aportado a mis ganas de salir adelante en mi carrera profesional.
7
Índice temático.
Agradecimientos. ........................................................................................................ 6
Resumen. ................................................................................................................. 10
Abstract ..................................................................................................................... 11
Introducción. ............................................................................................................. 12
Capítulo I. Antecedentes ........................................................................................... 13
Organigrama de la empresa. .............................................................................. 16
Planteamiento del problema. .............................................................................. 17
Capítulo II. Marco referencial y marco teórico........................................................... 20
¿Qué es una aplicación web? ............................................................................ 21
¿Qué es HTML? ................................................................................................. 23
¿Qué es CSS? ................................................................................................... 24
¿Qué es JavaScript? .......................................................................................... 25
¿Qué es PHP? ................................................................................................... 27
¿Qué es estructura MVC (Modelo-Vista-Controlador)? ...................................... 28
¿Por qué utilizar la estructura MVC (Modelo-Vista-Controlador)? ...................... 29
Frameworks de desarrollo de PHP ..................................................................... 31
Laravel ............................................................................................................... 34
CakePHP............................................................................................................ 36
CodeIgniter ......................................................................................................... 38
Symfony ............................................................................................................. 41
Capítulo III. Metodología ........................................................................................... 49
¿Qué es la metodología comparativa? ............................................................... 50
¿Por qué la metodología comparativa? .............................................................. 50
Capítulo IV. Resultados y conclusiones .................................................................... 52
Resultados. ........................................................................................................ 53
Conclusiones. ..................................................................................................... 54
Bibliografía. ............................................................................................................... 55
Glosario. ................................................................................................................... 58
8
Índice de fotografías.
IMAGEN 1.1 - Imagen logotipo de empresa SOLEMTI……………………………… 14
IMAGEN 1.2 - Localización de la empresa SOLEMTI en Google
Maps…………………………………………………………………………………...…... 15
IMAGEN 1.3 - Fachada del edificio de la empresa SOLEMTI……………………..… 15
IMAGEN 1.4 - Organigrama de la empresa SOLEMTI…………………………...…... 16
IMAGEN 2.1 - Flujo de trabajo de una aplicación Web………………………..……… 22
IMAGEN 2.2 - Imagen logotipo HTML……………………………………………..…… 23
IMAGEN 2.3 - Imagen logotipo CSS…………………………………………………..... 24
IMAGEN 2.4 - Imagen logotipo JavaScript………………………………………...…… 26
IMAGEN 2.5 - Imagen logotipo PHP…………………………………………………..... 28
IMAGEN 2.6 - Diagrama ilustrativo que marca el flujo de la estructura MVC…….... 31
IMAGEN 2.7 - Ilustración de frameworks de desarrollo Web PHP………………..… 32
IMAGEN 2.8 - Interés a lo largo del tiempo en los framework de desarrollo Web más
populares a lo largo de los últimos años…………………………………………..…… 32
IMAGEN 2.9 - Diagrama de pastel. Gráfica de medida de popularidad de los
frameworks PHP en la plataforma GitHub……………………………………………… 33
IMAGEN 2.10 - Imagen logotipo Laravel…………………………………………..…… 34
IMAGEN 2.11 - Imagen logotipo CakePHP…………………………………………….. 36
IMAGEN 2.12 - Imagen logotipo CodeIgniter……………………………………...…... 38
IMAGEN 2.13 - Imagen logotipo Symfony……………………………………………… 41
IMAGEN 2.14 - Imagen logotipo de licencia FreeBSD………………………………... 44
IMAGEN 2.15 - Imagen logotipo de licencia MIT…………………………………….... 44
IMAGEN 2.16 - Ejemplo de interfaz de líneas de comandos post- instalación de
Laravel……………………………………………………………………………………… 45
9
Índice de tablas.
TABLA 2.1 - Tabla comparativa de características de frameworks de desarrollo
PHP…………………………………………………………………………………………. 43
TABLA 2.2 - Comparativa de frameworks de desarrollo web PHP………………..… 46
TABLA 4.1 - Tiempo de realización de un sistema web…………………………….... 53
10
Resumen. El siguiente documento se concentra en el análisis de los framework de desarrollo en
lenguaje de programación PHP más populares para la elaboración de sistemas de
información WEB.
Uno de los problemas principales problemas para cualquier desarrollador de un
sistema de información WEB es saber elegir las herramientas adecuadas para
comenzar un proyecto y no tener una curva de dificultad bastante inclinada durante el
posterior desarrollo del mismo.
La implementación de un framework de desarrollo en un proyecto es una
solución ya que la curva de aprendizaje de éstas no es complicada, son orientado a
objetos, incorpora el patrón Modelo-Vista-Controlador, se puede adaptar a cualquier
proyecto desarrollado en PHP puro, entre otras características.
Por lo tanto, el objetivo fundamental es identificar un framework de desarrollo
que cumpla con las necesidades de un proyecto y permita agilizar el desarrollo
analizando cada una de las características y cualidades con las que cuentan.
Palabras clave: PHP, framework, popular.
11
Abstract The following document focuses on the analysis of the most popular PHP development
frameworks for the development of a WEB information system.
One of the main problems for any developer of a WEB information system is to
know how to choose the right tools to start a project and not having a difficulty curve
quite inclined during the subsequent development of it.
The implementation of a development framework in a project is a solution since
the learning curve of these frameworks is not complicated, they are object oriented, it
incorporates the Model-View-Controller model, it can be adapted to any project
developed in pure PHP, among other features.
Therefore, the fundamental objective is to identify a PHP development
framework that meets the needs of a project and allows to speed up the development
by analyzing each of the characteristics and qualities that they have.
Keywords: PHP, framework, popular.
12
Introducción.
La presente tesina denominado: “Análisis de características de los framework de
desarrollo en PHP más populares para la elaboración de sistemas de información
WEB”; es un documento informativo que tiene como objetivo destacar las cualidades
de diferentes herramientas de programación, mejor conocidas como framework de
desarrollo, para la elaboración de páginas, aplicaciones o sistemas de información
WEB.
Los framework de desarrollo facilitan, organizan y optimizan la programación
web de muchas maneras. Primeramente, los framework de desarrollo incrementan la
productividad de los programadores ya que el escribir un código, que usualmente
tomaría horas o días y cientos de líneas de código, pueden ser realizados incluso en
minutos con ayuda de las funciones pre-establecidas en un proyecto creado con éste.
Asimismo, cuentan con una ventaja de seguridad ya que los usuarios se convierten
en los testers de éstos gracias a la comunidad activa de desarrolladores y la rápida
respuesta de los creadores de la mayoría de los framework de desarrollo en PHP más
populares.
También, se puede incluir que éstos cuentan con una vasta documentación y
foros activos donde cualquier otro desarrollador puede resolver tus dudas. Finalmente,
una de las características más importantes para los desarrolladores es que la mayoría
de los framework más populares son gratis, y te permiten programar más rápido con
menor esfuerzo reduciendo así considerablemente el costo de desarrollo.
A continuación, se realizará un análisis comparativo de los framework de
desarrollo en PHP más populares, exponiendo sus características, similitudes,
diferencias, ventajas y desventajas.
13
Capítulo I. Antecedentes
_____________________________________________
En este capítulo se introduce con los datos relevantes en dónde se
realiza el presente documento durante el periodo de estadías
profesionales. Asimismo, se establecen los objetivos de esta
investigación, qué se desea contestar, la hipótesis a probar, las
limitaciones y justificación de la misma.
14
Antecedentes
SOLEMTI es una empresa de Soluciones Empresariales de Tecnología de
Información que nació en Mazatlán, creada por tres jóvenes entusiasmado por crear
un negocio e impulsar el talento local. Inició ofreciendo servicios de Desarrollo
y Diseño de Sitios Web y Sistemas Web, después se certifica ante IBM como una
empresa de Comercio Electrónico, Marketing Digital y, recientemente Desarrollo de
Aplicaciones Móviles.
IMAGEN 1.1 – Imagen logotipo de empresa SOLEMTI.
SOLEMTI cuenta con un historial de antecedentes como una empresa de
soluciones empresariales de tecnología de información. Nacida en el año 2006, su
dedicación constante y eficaz a la resolución de problemas tecnológicos para sus
clientes, la ha catalogado como unas de las empresas con mayor dedicación,
versatilidad e impulsor de talento local.
15
Localización.
SOLEMTI se encuentra ubicado en Calzada Rafael Buelna Tenorio 202 Interior B-3,
Hacienda las Cruces, 82126 Mazatlán, Sin.
A continuación, se anexa un mapa de localización de la empresa SOLEMTI y
foto de fachada de la empresa.
IMAGEN 1.2 - Localización de la empresa SOLEMTI en Google Maps.
IMAGEN 1.3 - Fachada del edificio de la empresa SOLEMTI.
16
Objetivos y prioridades de la empresa.
Ser reconocidos como una empresa mazatleca de Soluciones Empresariales de
Tecnologías de Información ofreciendo servicios de Desarrollo y Diseño
de Sitios Web, Desarrollo de Aplicaciones y Sistemas Web. Ofrecer soluciones
innovadoras con tecnologías de información que se adapten a las necesidades de
nuestros clientes, desarrollando y haciendo uso del talento de jóvenes Sinaloenses,
siempre enfocados en crear mejores sistemas de comercio electrónico, estrategias de
marketing digital, increíbles experiencias web y aplicaciones móviles útiles para la vida
diaria.
Organigrama de la empresa.
A continuación, se presenta un organigrama de la empresa SOLEMTI dónde se refleja
claramente el consejo gerencial de manera jerárquica y semántica divida en cinco
actividades centrales para la operatividad de la empresa.
IMAGEN 1.4 – Organigrama de la empresa SOLEMTI.
17
Visión.
Ser reconocidos como la empresa que rompe paradigmas y es reconocida como el
líder en el mercado de desarrollo de Tecnologías de Información, empoderando el
desarrollo personal de nuestros colaboradores.
Misión.
Ofrecer soluciones innovadoras con tecnologías de información que se adapten a las
necesidades de nuestros clientes, desarrollando y haciendo uso del talento de jóvenes
Sinaloenses, siempre enfocados en crear mejores sistemas de comercio electrónico,
estrategias de marketing digital, increíbles experiencias web y aplicaciones móviles
útiles para la vida diaria.
Planteamiento del problema.
Como planteamiento del problema se puede redactar la actual desinformación sobre
los beneficios que los framework de desarrollo en PHP pueden tener en la vida
cotidiana de un desarrollador WEB. Se sabe que el lenguaje de programación PHP es
un lenguaje orientado al lado del servidor, y por lo tanto el hacer una simple función
puede llevar bastante tiempo y una gran cantidad de líneas de código para llegar a
una solución.
Uno de los principales problemas que genera esta desinformación sobre las
herramientas conocidas como frameworks de desarrollo, es la falta de integración a
proyectos actuales, causando así una problemática relacionada al esfuerzo invertido,
al capital de la empresa invertido en el proyecto, y el tiempo invertido en el desarrollo
del mismo. De igual manera, provienen problemas secundarios como diversidad de
herramientas parecidas y la adaptación de éstos a las necesidades técnicas de un
proyecto, y la poca información que existen sobre ellas al momento de elegir cuál es
la indicada para su realización.
Mientras tanto, un framework de desarrollo en PHP, como lo son CodeIgniter,
CakePHP, Laravel y Symfony, de los que se espera desglosar las características de
una manera analítica y detallada, te permite realizar tareas en un periodo de tiempo
menor, con menor esfuerzo y menor cantidad de líneas de código.
Propuesta de investigación.
Con este documento se propone realizar un análisis a los framework de desarrollo en
PHP más populares del año 2017 tomando en cuenta sus características, cualidades,
ventajas y desventajas para así poder clarificar la problemática actual de
desinformación sobre lo que es un framework de desarrollo PHP.
18
Objetivos.
Se establecieron los siguientes objetivos que guiarán este trabajo de investigación.
General.
El objetivo general de esta investigación es:
Proponer un análisis detallado de las características, ventajas y desventajas en
el uso de framework de desarrollo en PHP.
Particulares.
Orientar a programadores WEB sobre las características y consecuencias de
uso de un framework de desarrollo PHP.
Determinar la adaptabilidad de un framework de desarrollo PHP a un sistema
de información WEB.
Diferenciar las características más importantes de los framework de desarrollo
PHP más usados del año 2017.
Preguntas de investigación
1. ¿Qué es un framework de desarrollo en PHP?
2. ¿Cuáles son las características principales de un framework de desarrollo en
PHP?
3. ¿Qué diferencias técnicas existen entre los framework de desarrollo en PHP
más populares?
4. ¿Cuál puede ser considerado el mejor framework de desarrollo en PHP?
Hipótesis.
Los framework de desarrollo en PHP son herramientas útiles, seguras, escalables,
adaptables, facilitadoras para la elaboración de un sistema de información web
reduciendo más del 50% del esfuerzo implementado por los programadores WEB
hasta y reduciendo el costo de producción de un proyecto.
Limitaciones y supuestos.
Se limitará al equipo de desarrollo WEB de la empresa SOLEMTI, agencia mazatleca
de desarrollo WEB, móvil y servicios de tecnologías de información. Debido a una gran
cantidad de herramientas conocidas como framework de desarrollo PHP, por lo tanto,
se reduce el número de objetos de estudio a solo cuatro.
Justificación.
Un framework de desarrollo web es un tipo de herramienta específicamente diseñada
para ayudar al desarrollo de aplicaciones web a los programadores. Estas
19
herramientas típicamente cuentan con funcionalidades esenciales que en la mayoría
de las aplicaciones web son comunes, así como el manejo de sesión de usuarios, la
persistencia de los datos, y un sistema de templates o modelado. El usar un framework
apropiado en un proyecto enfocado al desarrollo de una aplicación web, un
desarrollador siempre puede ahorrarse una cantidad significante de tiempo dedicada
a la programación y diseño de una página web.
Cada framework de desarrollo es diferente, pero muchos de ellos proveen una
gran variedad de características y herramientas para los desarrolladores. Asimismo,
al usar una de estas herramientas, el programador evita tener que reutilizar y re
implementar estas mismas herramientas para cada aplicación web que vaya a ser
creada.
Por lo tanto, se propone definir las diferencias, similitudes, ventajas y
desventajas de estas herramientas que facilitan el desarrollo, disminuyendo costos,
tiempo y esfuerzo, y optimizando el trabajo para así tener el conocimiento suficiente
para poder elegir entre una de estas herramientas.
20
Capítulo II. Marco referencial y marco teórico
_____________________________________________
En este capítulo se definen conceptos esenciales, elementales y
relevantes a esta investigación. Posteriormente, se analizan las
características más importantes de cuatro frameworks de desarrollo PHP
para así concluir con un análisis apoyado de unas tablas comparativas.
21
Introducción
Millones de empresas utilizan Internet como un canal de comunicación rentable. Les
permite intercambiar información con su mercado objetivo y realizar transacciones
rápidas y seguras. Sin embargo, una participación efectiva entre empresa-cliente, solo
es posible cuando la empresa puede capturar y almacenar todos los datos necesarios,
y tiene un medio para procesar esta información y presentar los resultados al usuario.
Se presenta una ilustración demostrando la relevancia actual
Por lo tanto, para poder analizar las diferencias técnicas entre los framework de
desarrollo en PHP más populares, es necesario dejar en claro algunas definiciones,
ya que de esta manera la curva de dificultad de compresión a este documento será
menor y facilitará al lector su interés.
¿Qué es una aplicación web?
Las aplicaciones web suelen codificarse en un lenguaje compatible con el navegador,
como JavaScript y HTML, ya que estos idiomas se basan en el navegador para hacer
que el programa sea ejecutable. Algunas de las aplicaciones son dinámicas y
requieren un procesamiento del lado del servidor. Otros son completamente estáticos
y no requieren procesamiento en el servidor. [02]
De la misma manera, usan una combinación de scripts del lado del servidor
(PHP) para manejar el almacenamiento y la recuperación de la información, y scripts
del lado del cliente (JavaScript y HTML) para presentar información a los usuarios.
Esto les permite a los usuarios interactuar con la compañía usando formularios en
línea, sistemas de administración de contenido, carros de compras y más. Además,
las aplicaciones permiten a los empleados crear documentos, compartir información,
colaborar en proyectos y trabajar en documentos comunes independientemente de la
ubicación o el dispositivo.
La aplicación web requiere un servidor web para gestionar las solicitudes del
cliente, un servidor de aplicaciones para realizar las tareas solicitadas y, a veces, una
base de datos para almacenar la información. [02]
Para la entera comprensión de lo que es una aplicación web, es necesario
definir un flujo general de su comportamiento.
22
IMAGEN 2.1 – Flujo de trabajo de una aplicación Web
Teniendo claro el flujo general de una aplicación web, se pueden definir distintas
relevancias por las cuales optar en el desarrollo de una.
Las aplicaciones web se ejecutan en múltiples plataformas sin importar el
sistema operativo o el dispositivo, siempre que el navegador sea compatible.
Todos los usuarios acceden a la misma versión, eliminando cualquier problema
de compatibilidad
Todos los usuarios acceden a la misma versión, eliminando cualquier problema
de compatibilidad
No están instalados en el disco duro, lo que elimina las limitaciones de espacio
Reducen los costos tanto para la empresa como para el usuario final ya que
hay menos soporte y mantenimiento requerido por la empresa y menos
requisitos para la computadora del usuario final.
Solicitud
El usuario activauna solicitud alservidor web através de Internet,ya sea a través deun navegador webo la interfaz deusuario de laaplicación.
Reenvía
El servidor webreenvía estasolicitud al servidorde aplicaciones webapropiado.
Consulta
El servidor deaplicaciones webrealiza la tareasolicitada, comoconsultar la base dedatos o procesar losdatos, y luegogenera losresultados de losdatos solicitados.
Envía
El servidor de aplicaciones web envía resultados al servidor web con la información solicitada o los datos procesados.
Responde
El servidor web responde al cliente con la información solicitada que luego aparece en la pantalla del usuario
23
¿Qué es HTML?
En 1990, como parte de su visión de la Web, Tim Berners-Lee definió el concepto
de hypertext , el cual Berners-Lee formalizó el siguiente año a través de una marca
principalmente basa da en SGML . El IETF comenzó formalmente a especificar HTML
en 1993, Y después de varios borradores se liberó la versión 2.0 en 1995. En 1994
Berners-Lee fundó el W3C para desarrollar la Web. En 1996, el W3C asumió el
control de los trabajos de HTML y publicó la Recomendación HTML 3.2 un año más
tarde. HTML 4.0 fue liberada en 1999 y se convirtió en estándar en el año 2000. [18]
IMAGEN 2.2 - Imagen logotipo HTML.
En esos momentos, el W3C casi abandonó HTML en favor de XHTML, creando
un grupo independiente llamado WHATWG en 2004. Gracias al WHATWG, el trabajo
de HTML5 continuó: las dos organizaciones liberaron el primer borrador en 2008 y el
estándar final en 2014.
En 1990, como parte de su visión de la Web , Tim Berners-Lee definió el concepto
de hypertext, el cual Berners-Lee formalizó el siguiente año a través de una marca
principalmente basa da en SGML. El IETF comenzó formalmente a especificar HTML
en 1993, Y después de varios borradores se liberó la versión 2.0 en 1995. En 1994
Berners-Lee fundó el W3C para desarrollar la Web. En 1996, el W3C asumió el control
de los trabajos de HTML y publicó la Recomendación HTML 3.2 un año más tarde.
HTML 4.0 fue liberada en 1999 y se convirtió en estándar en el año 2000.
En esos momentos, el W3C casi abandonó HTML en favor de XHTML, creando
un grupo independiente llamado WHATWG en 2004. Gracias al WHATWG, el trabajo
de HTML5 continuó: las dos organizaciones liberaron el primer borrador en 2008 y el
estándar final en 2014. [04]
HTML, que significa Lenguaje de Marcado para Hipertextos (HyperText Markup
Language) es el elemento de construcción más básico de una página web y se usa
para crear y representar visualmente una página web. Determina el contenido de la
página web, pero no su funcionalidad. Otras tecnologías distintas de HTML son
24
usadas generalmente para describir la apariencia/presentación de una página web
(CSS) o su funcionalidad (JavaScript). [19]
De la misma manera, HTML le da "valor añadido" a un texto estándar en
español. Híper Texto se refiere a enlaces que conectan una página Web con otra, ya
sea dentro de una página web o entre diferentes sitios web. los vínculos son un
aspecto fundamental de la Web. Al subir contenido a Internet y vincularlo a páginas
de otras personas, te haces participante activo de esta Red Mundial. [19]
A su vez, HTML usa "markup" o marcado para anotar textos, imágenes, y otros
contenidos que se muestran en el Navegador Web. El lenguaje de marcado HTML
incluye "elementos" especiales tales como <head>, <title>, <body>, <header>,
<article>, <section>, <p>, <div>, <span>, <img>, y muchos otros más.
¿Qué es CSS?
Hojas de Estilo en Cascada (Cascading Style Sheets) es el lenguaje utilizado para
describir la presentación de documentos HTML o XML, esto incluye varios lenguajes
basados en XML como son XHTML o SVG. CSS describe como debe ser renderizado
el elemento estructurado en pantalla, en papel, hablado o en otros medios. [05]
IMAGEN 2.3 - Imagen logotipo CSS.
CSS fue propuesto por primera vez por Håkon Wium Lie el 10 de octubre de
1994. Al mismo tiempo, Lie trabajaba con Tim Berners-Lee en el CERN. Muchos otros
lenguajes de hojas de estilos fueron propuestos al mismo tiempo, y las discusiones en
las listas de correo públicas dentro del W3C dieron lugar a la primera Recomendación
CSS por el W3C (CSS1) en 1996. En particular, la propuesta de Bert Bos fue
influyente; él fue el coautor de CSS1 y es reconocido como el cocreador de CSS. [05]
Las hojas de estilo han existido de una forma u otra desde los comienzos del
Standard Generalized Markup Language (SGML) en la década de los 80s, y CSS fue
desarrollado para proveer hojas de estilos para la web. Un requerimiento para un
25
lenguaje de hoja de estilos web era que las hojas de estilo vinieran en diferentes estilos
en la web. [28]
A medida que HTML fue creciendo, llegó a abarcar una amplia variedad de
capacidades de diseño para satisfacer las demandas de los diseñadores web. Esta
evolución dio al diseñador mayor control sobre la apariencia del sitio, con el costo de
un HTML más complejo. Variaciones en las implementaciones de los navegadores
web, como ViolaWWW y WorldWideWeb, hicieron más difícil la consistencia de la
apariencia del sitio web, y los usuarios tenían menos control sobre cómo era mostrado
el contenido web. [28]
El navegador/editor creado por Tim Berners-Lee tenía hojas de estilos que
fueron introducidas dentro del programa. Las hojas de estilos, por lo tanto, no eran
enlazadas a los documentos en la web. Robert Cailliau, también del CERN, quería
separar la estructura de la presentación, de modo que diferentes hojas de estilo
podrían describir diferentes presentaciones para impresión, pantallas y editores.
CSS es uno de los lenguajes base de la Open Web y posee una especificación
estandarizada por parte del W3C. Desarrollado en niveles, CSS1 es ahora obsoleto,
CSS2.1 es una recomendación y CSS3, ahora dividido en módulos más pequeños,
está progresando en camino al estándar. [28]
Es un lenguaje declarativo que controla el aspecto de las páginas web en
el navegador. El navegador aplica declaraciones de estilo CSS a los elementos
seleccionados para mostrarlos correctamente. Una declaración de estilo contiene las
propiedades y sus respectivos valores, los cuales determinan cómo se verá una
página web.
CSS es una de las tres principales tecnologías web, junto
con HTML y JavaScript. CSS usualmente le da estilo a elementos HTML (HTML
elements), pero también puede ser utilizada con otros lenguajes de
marcado como SVG o XML. Una regla CSS es un conjunto de propiedades asociadas
con un selector. [28]
¿Qué es JavaScript?
26
Concebido como un lenguaje de servidor por Brendan Eich (cuando trabajaba para
Netscape Corp). JavaScript pronto se integró a Netscape Navigator 2.0 en septiembre
de 1995. JavaScript gozó de un éxito inmediato, por lo que Microsoft introdujo Internet
Explorer 3.0 soporte de JavaScript bajo el nombre de JScript en Agosto de 1996. [20]
IMAGEN 2.4 - Imagen logotipo JavaScript.
En noviembre de 1996, Netscape empieza a trabajar junto con ECMA
International para convertir Javascript en un estándar dentro de la industria. Desde
entonces, la versión estandarizada de JavaScript es conocida bajo el nombre de
ECMAScript y la especificación es conocida como ECMA-262. La más conocida (y
más implementada) versión de ECMAScript es ECMA-262 3ra edición. La versión
actual, disponible en todos los navegadores web modernos es ECMA-262 5ta
edición. Actualmente, se está trabajando en una 6ta edición de ECMAScript. [20]
JavaScript (JS) es un lenguaje de programación principalmente utilizado
en navegadores web para escribir páginas web dinámicamente. Pero a menudo
también del lado del servidor.
JavaScript es una importante tecnología web que provee de interactividad y
efectos especiales las páginas web.
Si deseas construir algo así como una simple página web; deberías aprender
algunos conceptos básicos de programación web. Estos conceptos no son difíciles de
aprender, pero JavaScript es una tecnología potente con bastantes características y
algunas de ellas muy complejas, donde no existe una línea de aprendizaje
definida. Sugerimos comenzar con las siguientes páginas a través de los enlaces e ir
adquiriendo los conocimientos necesarios, desde lo más básico hasta lo más
avanzado, o puedes acceder directamente a los contenidos según interés. [20]
JavaScript es principalmente utilizado en los navegadores web. Permitiendo a
los desarrolladores hacer muchísimas cosas: Manipular el contenido de las páginas a
través del DOM, manipular datos con AJAX e IndexedDB, crear gráficos con Canvas,
interactuar con el dispositivo que ejecuta el navegador utilizando varias APIs, etc.
27
El reciente aumento de las APIs disponibles en los navegadores, como una
gran mejora en el rendimiento, lo convierte en uno de los lenguajes de programación
más usados en el mundo. [20]
Recientemente, JavaScript ha vuelto al servidor con el éxito de Node JS. Esta
plataforma provee un entorno completo de ejecución JavaScript fuera del navegador,
capaz de ser usado en cualquier plataforma (Linux, MacOS y Windows). No es el
único, pero el más usado recientemente para correr JavaScript fuera de los
navegadores. Esto permite el uso de JavaScript como un lenguaje de scripting para
automatizar ciertos procesos en la PC, así como construir HTTP completamente
funcional y servidores Web Sockets. [20]
¿Qué es PHP?
PHP (acrónimo recursivo de PHP: Hypertext Preprocessor) es un lenguaje de código
abierto muy popular especialmente adecuado para el desarrollo web y que puede ser
incrustado en HTML. [09]
PHP, o Preprocesador de Hipertexto, es un lenguaje de scripting del lado del
servidor muy popular. PHP fue creado por Rasmus Lerdorf en 1994 y fue lanzado al
público en junio de 1995. En aquel entonces, era la forma abreviada de las
herramientas de la página de inicio personal. Después de dos años, en 1997, entró en
dominio público como PHP / F1 2.0. Un año después, dos programadores, Zeev
Suraski y Andi Gutmans, reescribieron la base de la versión original y lanzaron PHP
3. PHP 4, que salió en 2000, incorporó un motor de scripting llamado Zend Engine que
fue diseñado por Suraski y Gutmans. Tres versiones más importantes con algunas
subversiones se lanzaron en los últimos años con la última versión 7.0 lanzada en
2015. [09]
PHP puede ser desplegado en la mayoría de los servidores web y en casi todos
los sistemas operativos y plataformas sin costo alguno. El lenguaje PHP se encuentra
instalado en más de 20 millones de sitios web y en un millón de servidores. El número
de sitios basados en PHP se ha visto reducido progresivamente en los últimos años,
con la aparición de nuevas tecnologías como Node.JS, Golang, ASP.NET, etc. El sitio
web de Wikipedia está desarrollado en PHP.5 Es también el módulo Apache más
popular entre las computadoras que utilizan Apache como servidor web.
El gran parecido que posee PHP con los lenguajes más comunes de
programación estructurada, como C y Perl, permiten a la mayoría de los
programadores crear aplicaciones complejas con una curva de aprendizaje muy corta.
También les permite involucrarse con aplicaciones de contenido dinámico sin tener
que aprender todo un nuevo grupo de funciones. [09]
28
IMAGEN 2.5 - Imagen logotipo PHP.
El código PHP está bien organizado y se puede incrustar fácilmente en el
código HTML. Funciona en todos los sistemas operativos principales, como Linux,
Windows, Unix y Mac OS, y es compatible con servidores web y empresariales
principales como Apache, Netscape, Microsoft IIS, etc. Además, es más fácil
solucionar problemas en PHP en comparación con otros idiomas de programación del
lado del servidor. Es el recurso más rápido disponible para crear sitios web dinámicos
habilitados para bases de datos. [09]
Para un desarrollador web, diseñar un sitio web complejo pero atractivo en un
corto espacio de tiempo es un gran desafío. Aquí es donde los framework de desarrollo
de PHP demuestran ser útiles. Los framework de desarrollo se pueden usar para
desarrollar sitios web de todos los tamaños y la complejidad. Los más populares en la
actualidad incluyen Laravel, Symfony, CodeIgniter y CakePHP. [09]
Dos décadas después de su creación, PHP ha registrado un crecimiento
fenomenal y sigue siendo fuerte. Hoy, controla más del 80% de todos los sitios web
del mundo. Esto incluye mayores como Facebook, Wikipedia y WordPress entre otros.
[09]
¿Qué es estructura MVC (Modelo-Vista-Controlador)?
El patrón MVC fue una de las primeras ideas en el campo de las interfaces gráficas
de usuario y uno de los primeros trabajos en describir e implementar aplicaciones
software en términos de sus diferentes funciones. [23]
29
MVC fue introducido por Trygve Reenskaug (web personal) en Smalltalk-76
durante su visita a Xerox Parc6 en los años 70 y, seguidamente, en los años 80, Jim
Althoff y otros implementaron una versión de MVC para la biblioteca de clases de
Smalltalk-80. Solo más tarde, en 1988, MVC se expresó como un concepto general
en un artículo sobre Smalltalk-80. [23]
Algunos aspectos del patrón MVC han evolucionado dando lugar a ciertas
variantes del concepto original, ya que las partes del MVC clásico realmente no tienen
sentido para los clientes actuales:
HMVC (MVC Jerárquico)
MVA (Modelo-Vista-Adaptador)
MVP (Modelo-Vista-Presentador)
MVVM (Modelo-Vista Vista-Modelo)
... y otros que han adaptado MVC a diferentes contextos.
Modelo-vista-controlador (MVC) es un patrón de arquitectura de software, que
separa los datos y la lógica de negocio de una aplicación de la interfaz de usuario y el
módulo encargado de gestionar los eventos y las comunicaciones. Para ello MVC
propone la construcción de tres componentes distintos que son el modelo, la vista y el
controlador, es decir, por un lado, define componentes para la representación de la
información, y por otro lado para la interacción del usuario. [23]
Este patrón de arquitectura de software se basa en las ideas de reutilización de
código y la separación de conceptos, características que buscan facilitar la tarea de
desarrollo de aplicaciones y su posterior mantenimiento.
¿Por qué utilizar la estructura MVC (Modelo-Vista-Controlador)?
Porque es un patrón de diseño de software probado y se sabe que funciona.
Con MVC la aplicación se puede desarrollar rápidamente, de forma modular y
mantenible. Separar las funciones de la aplicación en modelos, vistas y controladores
hace que la aplicación sea muy ligera. Estas características nuevas se añaden
fácilmente y las antiguas toman automáticamente una forma nueva. [23]
El diseño modular permite a los diseñadores y a los desarrolladores trabajar
conjuntamente, así como realizar rápidamente el prototipado. Esta separación
también permite hacer cambios en una parte de la aplicación sin que las demás se
vean afectadas.
Ahora que ya podemos tener una idea de las ventajas que nos puede aportar
el MVC, analicemos las diversas partes o conceptos en los que debemos separar el
código de nuestras aplicaciones.
Modelos
30
Es la capa donde se trabaja con los datos, por tanto, contendrá mecanismos para
acceder a la información y también para actualizar su estado. Los datos los tendremos
habitualmente en una base de datos, por lo que en los modelos tendremos todas las
funciones que accederán a las tablas y harán los correspondientes selects, updates,
inserts, etc.
No obstante, cabe mencionar que cuando se trabaja con MCV lo habitual
también es utilizar otras librerías como PDO o algún ORM como Doctrine, que nos
permiten trabajar con abstracción de bases de datos y persistencia en objetos. Por
ello, en vez de usar directamente sentencias SQL, que suelen depender del motor de
base de datos con el que se esté trabajando, se utiliza un dialecto de acceso a datos
basado en clases y objetos. [23]
Vistas
Las vistas, como su nombre nos hacen entender, contienen el código de nuestra
aplicación que va a producir la visualización de las interfaces de usuario, o sea, el
código que nos permitirá renderizar los estados de nuestra aplicación en HTML. En
las vistas nada más tenemos los códigos HTML y PHP que nos permite mostrar la
salida.
En la vista generalmente trabajamos con los datos, sin embargo, no se realiza
un acceso directo a éstos. Las vistas requerirán los datos a los modelos y ellas se
generará la salida, tal como nuestra aplicación requiera. [23]
Controladores
Contiene el código necesario para responder a las acciones que se solicitan en la
aplicación, como visualizar un elemento, realizar una compra, una búsqueda de
información, etc.
En realidad, es una capa que sirve de enlace entre las vistas y los modelos,
respondiendo a los mecanismos que puedan requerirse para implementar las
necesidades de nuestra aplicación. Sin embargo, su responsabilidad no es manipular
directamente datos, ni mostrar ningún tipo de salida, sino servir de enlace entre los
modelos y las vistas para implementar las diversas necesidades del desarrollo. [23]
31
Frameworks de desarrollo de PHP
Un PHP Framework es una colección de archivos que se organizan conjuntamente
para facilitar el desarrollo de una aplicación Web, o un sistema de información Web.
Hay varios Frameworks PHP disponibles en línea, entre los cuales los más populares
son; Symfony, Laravel, CakePHP, CodeIgniter. Estas herramientas facilitan las tareas
típicas de programación, como la configuración de la base de datos, el enrutamiento,
entre otras cosas.
Están diseñados para admitir el desarrollo de aplicaciones web, incluidos
servicios web, recursos web y API web. Los framework de desarrollo web
proporcionan una forma estándar de crear e implementar aplicaciones web. Asimismo,
tienen como objetivo automatizar los gastos generales asociados con las actividades
comunes realizadas en el desarrollo web. Por ejemplo, muchas de estas herramientas
proporcionan bibliotecas para el acceso a la base de datos, estructuras de plantillas y
administración de sesiones, y a menudo promueven la reutilización de códigos.
Aunque a menudo se dirigen al desarrollo de sitios web dinámicos, también se aplican
a sitios web estáticos.
La estructura de un framework de desarrollo de PHP tiene más sentido en el
paradigma de diseño estándar MVC (Model-View-Controller). Separa sus llamadas a
la base de datos (Modelos) desde su lógica comercial (Controladores) desde su
contenido de front-end (Vistas).
IMAGEN 2.6– Diagrama ilustrativo que marca el flujo de la estructura MVC.
32
IMAGEN 2.7 - Ilustración de frameworks de desarrollo Web PHP.
Los framework de desarrollo de PHP agregan seguridad y eficiencia a los proyectos
desarrollados en éstos mismos. Toman en cuenta cosas como inyecciones de SQL,
ataques XSS y más, y presentan defensas fundamentales contra estas amenazas.
[29]
La siguiente ilustración mostrará el interés de los usuarios hacia los siguientes
frameworks de desarrollo Web PHP: Laravel, Symfony, CakePHP y CodeIgniter,
desarrollado por EllisLab.
IMAGEN 2.8 - Interés a lo largo del tiempo en los framework de desarrollo Web más populares a lo largo de los últimos años.
33
Se utilizó como rango de tiempo de referencia un periodo de 3 años para ver
tanto el crecimiento en popularidad de éstos, así como su declive como frameworks
para después poder argumentar por qué su historia es así. [29]
De igual manera, se inserta una ilustración mostrando una gráfica de pastel
en la cual toma a sólo 15 frameworks de desarrollo en el año 2015, y mide la
popularidad que éstas tienen en la plataforma GitHub. [34]
IMAGEN 2.9 - Diagrama de pastel. Gráfica de medida de popularidad de los frameworks PHP en la plataforma GitHub
34
Laravel
Laravel es un framework de código abierto para desarrollar aplicaciones y servicios
web con PHP 5. Su objetivo es desarrollar aplicaciones con código PHP de forma
elegante y simple. Fue creado en 2011 y tiene una gran influencia de frameworks
como Ruby en Rails, Sinatra y ASP.NET MVC. [10]
En el 2011 su creador, Taylor Otwell, mostró Laravel por primera vez al mundo.
Por lo que, se trata de un framework con un enfoque fresco y moderno; al ser bastante
joven. Está hecho con la arquitectura MVC y resuelve necesidades actuales como
manejo de eventos y autenticación de usuarios. Además, cuenta con un código
modular y extensible por medio de un administrador de paquetes y un soporte robusto
para manejo de bases de datos.
IMAGEN 2.10– Imagen logotipo Laravel
Laravel es un framework joven con gran futuro. Cuenta con una comunidad
llena de energía, documentación atractiva de contenido claro y completo; y, además,
ofrece las funcionalidades necesarias para desarrollar aplicaciones modernas de
manera fácil y segura. Está equipado con un montón de características interesantes,
incluyendo enrutamiento RESTful, PHP nativo o atractivo motor ligero y muchos más.
Construido con varios componentes de Symfony, Laravel ofrece a las aplicaciones
web una increíble base de código confiable y bien probado. [10]
Características:
Laravel es un framework de desarrollo completo, diseñado para crear rápidamente
aplicaciones que utilizan la arquitectura MVC. Laravel es actualmente el framework de
desarrollo PHP más popular, con una gran comunidad de desarrolladores.
Cuenta con toneladas de paquetes específicos de Laravel, el motor de plantillas
Blade liviano, pruebas de unidades, ORM, un sistema de empaquetado, controladores
RESTful, y ahora Laravel es el primer marco para presentar el enrutamiento de una
manera abstracta. [10]
35
Elimina las complicaciones de la organización del código. La gestión de colas
también es una función que maneja las tareas en segundo plano y luego registra la
actividad por usted mientras que las tareas normalmente se ejecutan en la interfaz.
Los paquetes se pueden agregar fácilmente con el robusto Composer integrado en
Laravel. Se integra con Gulp y Elixir por lo que cualquier paquete npm y paquetes
bower se pueden llamar directamente a través de ssh. [10]
Una de las mejores cosas que maneja bien Laravel son las estructuras de SQL
como MongoDB o Redis. Es fácil comenzar con Laravel gracias a su extensa
documentación, popularidad y Laravel Udemy: videos populares y tutoriales
destinados a poner en marcha desarrolladores nuevos en Laravel.
Laravel es modular y extensible. Esto quiere decir que te permite agregar todo
lo que necesitas a través de su directorio Packalyst que cuenta con más de 5500
paquetes. Esto con el objetivo de que siempre encuentres lo que necesitas. Micro-
servicios y APIs. Permite desarrollar fácil y rápidamente micro-servicios y APIs de gran
rendimiento para los proyectos. [10]
Ventajas:
Entre las ventajas que destacan este framework, son:
Organizar archivos y codificar.
Desarrollo rápido de aplicaciones.
Arquitectura MVC (y PHP7).
Pruebas unitarias (RÁPIDO en HHVM).
Excelente documentación.
Alto nivel de abstracción.
Capacidades de sobrecarga usando métodos dinámicos.
Gran cantidad de funcionalidades listas para usar.
Integración de pago con banda.
Paquetes de encriptación muy fuertes.
ORM.
Desventajas:
Entre las desventajas que tiene este framework, se enlistan las siguientes:
36
No funciona en planes de alojamiento compartido.
Hace muchas consultas en su base de datos.
CakePHP
CakePHP empezó en 2005, cuando Ruby On Rails estaba ganando popularidad y
utiliza muchos de sus conceptos. Desde entonces la comunidad creció y generó
muchos subproyectos. [13]
IMAGEN 2.11 – Imagen logotipo CakePHP.
En el 2005, Michal Tatarynowicz escribió una mínima versión del framework Rapid
Application Framework en PHP. Él encontró que era el comienzo de un framework
muy bueno. Michal publico el framework bajo la licencia MIT, llamándolo Cake, y
abriéndolo a una comunidad de desarrolladores, quienes ahora mantienen cake bajo
el nombre de CakePHP. [13]
Características:
Cakephp es un framework de desarrollo ideal para principiantes y para el desarrollo
rápido de aplicaciones web comerciales. Viene con la generación de código y la
funcionalidad de andamios para acelerar el proceso de desarrollo, al tiempo que trae
toneladas de paquetes para cuidar la funcionalidad común.
Es único al tener convenciones MVC que ayudan a guiar el proceso de
desarrollo. La configuración también es muy fácil ya que elimina la necesidad de
complicados archivos de configuración XML o YAML. [13]
37
Las compilaciones son rápidas y sus características de seguridad incluyen
medidas para evitar XSS, SQL Injection, CSRF y herramientas para la validación de
formularios. CakePHP está en desarrollo activo con buena documentación y muchos
portales de soporte para ayudarlo a comenzar. [13]
El Soporte Premium también es una opción para los desarrolladores que eligen
utilizar Cakephp, a través de Cake Development Corporation.
Es de código abierto y se distribuye bajo licencia MIT. Al igual que Ruby On
Rails, CakePHP facilita al usuario la interacción con la base de datos mediante el uso
de Active_record. Además, hace uso del patrón Modelo Vista Controlador. [13]
CakePHP tiene varias características que hacen que sea una gran elección
como framework para el desarrollo de aplicaciones rápidamente y con la menor
cantidad de molestia.
CRUD de la base de datos integrado.
URLs amigables.
Sistema de plantillas rápido y flexible.
Ayudas para AJAX, Javascript, HTML, formularios, etcétera.
Trabaja en cualquier subdirectorio del sitio.
Access Control Lists.
Sintetización de datos.
Componentes de seguridad y sesión.
Ventajas:
Entre las ventajas que destacan este framework, se enlistan las siguientes:
Framework moderno.
Admite PHP 5.5+.
Sistema Scaffolding y construcciones rápidas.
Muy bueno para aplicaciones web comerciales (licencia MIT).
Acceso a la base de datos, almacenamiento en caché, validación,
autenticación, están integrados.
Las herramientas de seguridad extensas incluyen el sitio cruzado.
Prevención de scripts, prevención de inyección SQL, CSRF y validación de
formulario.
Buena documentación.
38
Desarrollado activamente.
Desventajas:
No es tan bueno para construir APIS RESTful como en Laravel.
CodeIgniter
CodeIgniter es un framework para aplicaciones web de código abierto para crear sitios
web dinámicos con PHP. Su objetivo es permitir que los desarrolladores puedan
realizar proyectos mucho más rápido que creando toda la estructura desde cero,
brindando un conjunto de bibliotecas para tareas comunes, así como una interfaz
simple y una estructura lógica para acceder esas bibliotecas. [11]
IMAGEN 2.12 – Imagen logotipo CodeIgniter.
También hay que destacar que CodeIgniter es más rápido que muchos otros
entornos. Incluso en una discusión sobre entornos de desarrollo con PHP, Rasmus
Lerdorf, el creador de PHP, expresó que le gustaba CodeIgniter «porque es rápido,
ligero y parece poco un entorno.
Kohana ha creado una rama a partir de CodeIgniter 1.5.4 en 2007, como
resultado del disgusto de la comunidad por la falta de corrección de errores y el deseo
de incorporar otras características demandadas por los usuarios. [11]
Características:
Codeigniter es un framework de desarrollo ideal para el desarrollo rápido de
aplicaciones. Es un framework de desarrollo liviano y de bajo costo, con un espacio
pequeño que se puede instalar simplemente subiéndolo directamente a su hosting.
No se requiere una línea de comando especial o instalación de software. [11]
Crear aplicaciones web completas es muy fácil con su pequeña curva de
aprendizaje y numerosas bibliotecas.
Hablando del este del desarrollo, la documentación de Codeigniter es extensa,
y su comunidad es amplia y muy útil. Code Igniter también cuenta con el respaldo de
39
una entidad académica: el Instituto de Tecnología de Columbia Británica, que ayudará
a garantizar su continuo desarrollo y crecimiento. [11]
En función de las características, Codeigniter viene con muchas bibliotecas
integradas para pruebas de unidades, validación de formularios, correo electrónico,
sesiones, etcétera. Si no puede encontrar la biblioteca que está buscando, también es
bastante fácil crear la suya y luego compartirla con la comunidad. [11]
Algunos de los puntos más interesantes sobre este framework, sobre todo en
comparación con otros productos similares, son los siguientes:
Versatilidad:
Quizás la característica principal de CodeIgniter, en comparación con otros
frameworks PHP. CodeIgniter es capaz de trabajar la mayoría de los entornos o
servidores, incluso en sistemas de alojamiento compartido, donde sólo tenemos un
acceso por FTP para enviar los archivos al servidor y donde no tenemos acceso a su
configuración. [11]
Compatibilidad:
CodeIgniter, al menos en el momento de escribir este artículo de
desarrolloweb.com, es compatible con la versión PHP 4, lo que hace que se pueda
utilizar en cualquier servidor, incluso en algunos antiguos. Por supuesto, funciona
correctamente también en PHP 5. [11]
Actualizado:
Desde la versión 2 de CodeIgniter ya solo es compatible con la versión 5 de
PHP. Para los que todavía usen PHP 4 pueden descargar una versión antigua del
framework, como CodeIgniter V 1.7.3, que todavía era compatible. Estas versiones
están en la página de descargas de CodeIgniter. [11]
Facilidad de instalación:
No es necesario más que una cuenta de FTP para subir CodeIgniter al servidor
y su configuración se realiza con apenas la edición de un archivo, donde debemos
escribir cosas como el acceso a la base de datos. Durante la configuración no
necesitaremos acceso a herramientas como la línea de comandos, que no suelen
estar disponibles en todos los alojamientos. [11]
Flexibilidad:
CodeIgniter es bastante menos rígido que otros frameworks. Define una
manera de trabajar específica, pero en muchos de los casos podemos seguirla o no y
sus reglas de codificación muchas veces nos las podemos saltar para trabajar como
más a gusto encontremos. Algunos módulos como el uso de plantillas son totalmente
opcionales. Esto ayuda muchas veces también a que la curva de aprendizaje sea más
sencilla al principio. [11]
40
Ligereza:
El núcleo de CodeIgniter es bastante ligero, lo que permite que el servidor no
se sobrecargue interpretando o ejecutando grandes porciones de código. La mayoría
de los módulos o clases que ofrece se pueden cargar de manera opcional, sólo cuando
se van a utilizar realmente.
Documentación tutorializada:
La documentación de CodeIgniter es fácil de seguir y de asimilar, porque está
escrita en modo de tutorial. Esto no facilita mucho la referencia rápida, cuando ya
sabemos acerca del framework y queremos consultar sobre una función o un método
en concreto, pero para iniciarnos sin duda se agradece mucho. [11]
Ventajas:
Entre las ventajas que destacan este framework, se enlistan las siguientes:
Muy amigable para el desarrollador. No necesita dependencias o soportes
especiales.
Capacidad para utilizar bien los servicios normales de alojamiento web,
utilizando bases de datos estándar como MySQL.
Supera a la mayoría de los otros marcos (sin MVC).
Buena documentación y LTS (Soporte a largo plazo).
Desventajas:
Entre las desventajas que destacan este framework, se enlistan las siguientes:
Sin espacio de nombres, sin embargo, esto puede acelerar.
No es tan amigable con las pruebas unitarias como otros.
Pocas bibliotecas que se construyen dentro del marco
41
Symfony
En el año 2003, Fabien Potencier, creador de Symfony y actual CEO de Sensio Labs,
investigó acerca de las herramientas open source existentes para el desarrollo de
aplicaciones web en PHP, pero ninguna de las existentes cumplió con sus
expectativas.
IMAGEN 2.13 – Imagen logotipo Symfony.
Cuando PHP 5 fue liberado, consideró que las herramientas que existían en
ese momento habían madurado lo suficiente para ser integradas en un solo
framework. Le llevó un año desarrollar el núcleo de Symfony. Basó su trabajo en el
Modelo Vista Controlador, el ORM de Propel y el ayudante para realizar plantillas de
Ruby on Rails. [12]
La primera versión de Symfony fue lanzada en octubre de 2005, por Fabien
Potencier. Originalmente fue creado para el desarrollo de las aplicaciones de Sensio.
Luego, tras el éxito que tuvo en el desarrollo de una página web para comercio
electrónico y algunos otros proyectos, decidió liberarlo bajo una licencia open source.
En 2012 el CMS Drupal decidió empezar a usar algunos componentes de
Symfony en la versión Drupal 82
Características:
Symfony se promociona desde hace un tiempo como un proyecto muy estable, de alto
rendimiento, bien documentado y modular. Symfony está respaldado por los
SensioLabs franceses, y ha sido desarrollado por ellos y su comunidad. [12]
Symfony es utilizado por muchas empresas de renombre como la BBC y el
proyecto de código abierto como Drupal y eZpublish. Symfony fue escrito teniendo en
cuenta la estabilidad de una manera muy profesional. Su documentación es extensa,
42
y su comunidad es igual de vasta. construyendo API de REST de rendimiento, así
como aplicaciones web de pleno derecho.
Cuenta con las siguientes características:
Es fácil de instalar y configurar en la mayoría de plataformas.
Independiente del sistema gestor de base de datos.
Utiliza programación orientada a objetos y características como los
espacios de nombres.
Fácil de usar, aunque preferiblemente para el desarrollo de grandes
aplicaciones web.
Sigue la mayoría de mejores prácticas y patrones de diseño para la web.
Preparado para aplicaciones empresariales y adaptable a las políticas de
cada empresa.
Código fácil de leer que incluye comentarios de phpDocumentor.
Potente línea de comandos que facilitan la generación de código, esto es
fundamental para ahorrar tiempo de trabajo.
Ventajas:
Entre las ventajas que destacan este framework, se enlistan las siguientes:
Alto rendimiento, debido al almacenamiento en caché de código de bytes
Estable
Bien documentado, mantenido y apoyado
Muy buen soporte y es muy maduro
Desventajas:
Entre las desventajas que destacan este framework, se enlistan las siguientes:
Si bien la documentación es buena, hay una curva de aprendizaje pronunciada.
Las empresas se están moviendo a las arquitecturas de MVC Framework y
Symfony2 no es compatible con MVC.
43
A continuación, se mostrará una tabla que muestra detalles y características técnicas
de estos framework de desarrollo web.
Como podemos observar, estos cuatro framework de desarrollo Web tienen fechas de
lanzamiento un poco parecidas, pero podemos afirmar en base a observación de fila
“última versión”, que el framework de desarrollo Web con una versión más alta es
Laravel. [12]
Cabe destacar que la fecha de realización de esta tabla en cuestión es del mes
de junio del año 2017, por lo tanto, podemos asumir que alguno debe de tener una
versión más hasta en la fecha actual en la que se redacta este documento. [12]
Posteriormente, en la observación a la tabla, se puede ver que el tipo de licencia
con la que cuenta el framework CodeIgniter es “BSD”, mientras que Symfony, Laravel
y CakePHP, cuentan con un tipo de licencia MIT.
La diferencia entre estos dos tipos de licencia son las siguientes:
TABLA 2.1 –Tabla comparativa de características de frameworks de desarrollo PHP.
44
IMAGEN 2.14 – Imagen logotipo de licencia FreeBSD.
Una aplicación licenciada con BSD permite que otras versiones puedan tener
otros tipos de licencias, tanto propietarias como libres. BSD permite que los
redistribuidores puedan hacer casi cualquier cosa con el software, incluyendo usarlo
para productos propietarios.
IMAGEN 2.15 – Imagen logotipo de licencia MIT.
Por el otro lado, la licencia MIT, una de tantas licencias de software que se
origina en el Instituto Tecnológico de Massachusetts (MIT, Massachusetts Institute of
Technology), permite reutilizar software dentro de Software propietario. [33]
Esto quiere decir que, en términos más profundos respecto a ambas licencias,
el tema de licenciar, el dar permisos a los propietarios de una copia del software con
una de estas licencias, así como la publicación de éstos, son independientes del
desempeño de estas herramientas. [33]
Posteriormente, podemos observar que los requerimientos mínimos para poder
instalar alguno de estos frameworks es el uso de una versión de PHP igual o mayor a
la 5. Actualmente, la última versión estable de este lenguaje orientado al servidor es
la 7.1.12 lanzada el día 24 del mes de noviembre del año 2017. [33]
45
Analizando con detenimiento las características de los framework de desarrollo
en cuestión, vemos la similitud que existe de Laravel con CakePHP, los cuales usan
los arreglos en lenguaje PHP para el manejo de información de las bases de datos.
Por otro lado, CodeIgniter utiliza un lenguaje de clases asumiendo el uso de la
programación orientada a objetos ya. Mientras tanto, Symfony utiliza XML, CVS y
PHP.
La generación de código para Symfony, Laravel y CakePHP es por medio del CLI; por
lo tanto, todo el código, creación de directorios, documentos, directivas, entre otras
propiedades, se hacen por medio de líneas de comandos. Cabe destacar que, a pesar
que todas estas generan su código por líneas de comandos, no todas presentan esta
interfaz al momento del desarrollo.
IMAGEN 2.16 – Ejemplo de interfaz de líneas de comandos post- instalación de Laravel.
Si proseguimos con la observación en la tabla, podemos aclarar que estos
framework cuentan con un ORM, que es una técnica de programación para convertir
datos entre sistema de tipos utilizado en un lenguaje de programación orientado a
objetos y la utilización de una base de datos relacional.
Esto quiere decir que, es un modelo de programación que consiste en la
transformación de las tablas de una base de datos, en una serie de entidades que
simplifican las tareas básicas de acceso a los datos para el programador por medio
de atajos, alias, o diferentes identificadores los cuales cada framework se encarga de
brindar al desarrollador.
46
A continuación, se insertará una tabla de comparación de los framework de desarrollo
Web objetivo de estudio.
LARAVEL SYMFONY CODEIGNITER CAKEPHP
Versión de PHP requerida
5.5.9
5.5.9
5.4
5.5.9
Tipos de base de datos
soportadas.
MySQL
Postgress SQLite
SQL Server
MySQL
Postgress SQLite Oracle
MySQL Postgress
MySQL SQLite
Postgress SQL server
Oracle
Almacenamiento en la
nube.
Amazon S3 Rackspace
Amazon S3
(plugin)
Amazon S3 (plugin)
Amazon S3 (plugin)
Documentación oficial en
el sitio.
Tutoriales
Referencias de las API
Lecciones de videos
Tutoriales
Referencias de las API
Algunos tutoriales
Referencias de las API
Tutoriales
Referencias de las API
Instalación de
extensiones
automatizadas.
(Vía Composer)
Sí
Sí
Solo con librerías externas.
Sí
TABLA 2.2 - COMPARATIVA DE FRAMEWORKS DE DESARROLLO WEB PHP
Las características de casi las mismas en distintas propiedades.
Analizando con detenimiento, podemos analizar que el framework CodeIgniter
no tiene tantas características como las demás en la misma tabla. Una desventaja
considerable con la demás es la razón de solo soportar dos tipos de base de datos,
MySQL y Postgress; mientras tanto, Symfony, Laravel y CakePHP añaden a su lista
de tipos de base de datos soportadas a SQLite, SQL Server e incluso Oracle.
47
Posteriormente, se ve la diferencia respecto al almacenamiento en la nube;
Laravel, que en su caso usa Amazon S3 Rackspace, no es un plugin el cual hay que
instalar como extensión de sí mismo, así dañando incrementalmente el rendimiento
que tiene al momento de hacer las conexiones pertinentes a la nube.
¿Qué es Amazon S3?
Amazon S3 es almacenamiento para Internet. Es un servicio de almacenamiento
sencillo que ofrece a los desarrolladores de software una infraestructura de
almacenamiento de datos de gran escalabilidad, fiable y de baja latencia con costos
muy bajos. [24]
Amazon S3 se ha diseñado con gran cuidado para satisfacer las necesidades
de escalabilidad, fiabilidad, velocidad, costo bajo y simplicidad que se deben cumplir
para los desarrolladores internos de Amazon. Amazon S3 transfiere estos mismos
beneficios a los desarrolladores externos. Puede obtener acceso a más información
sobre los requisitos de diseño de Amazon S3 en la página de detalles de Amazon S3.
[24]
¿Qué puedo hacer con Amazon S3?
Amazon S3 proporciona una sencilla interfaz de servicios web que puede utilizar para
almacenar y recuperar la cantidad de datos que desee, cuando desee y desde
cualquier parte de la Web. Mediante este servicio web, los desarrolladores pueden
crear de forma sencilla aplicaciones que utilizan el almacenamiento de Internet. Dado
que Amazon S3 ofrece una gran escalabilidad y el usuario solo paga por lo que utiliza,
los desarrolladores pueden comenzar con una aplicación pequeña y ampliarla lo que
deseen, sin poner en riesgo el desempeño o la fiabilidad. [24]
Amazon S3 también se ha diseñado para ser muy flexible. Almacene el tipo y
la cantidad de datos que desee; lea el mismo fragmento de datos un millón de veces
o solo en caso de recuperación de desastres de emergencia; cree una aplicación FTP
sencilla o una aplicación web sofisticada como el sitio web de venta al por menor
Amazon.com. Amazon S3 permite a los desarrolladores centrarse en la innovación,
en lugar de devanarse los sesos para almacenar sus datos.
Una característica, no elemental para el funcionamiento de un framework, pero
sí para la popularidad, comprensión y utilización del mismo, es su documentación. [24]
Como definición, en el desarrollo de productos de hardware y software de
computadoras, la documentación es la información que describe el producto para sus
usuarios. Consiste en los manuales técnicos del producto y la información en línea
(incluidas las versiones en línea de los manuales técnicos y las descripciones de las
instalaciones de ayuda). El término también se usa a veces para referirse a la
información de origen sobre el producto que figura en los documentos de diseño,
comentarios detallados del código, notas del producto y notas de la sesión de la
pizarra.
48
El término se deriva de la idea de que los ingenieros y programadores
"documentan" sus productos en forma escrita. A los primeros usuarios de
computadoras a veces simplemente se les entregaba la "documentación" de los
ingenieros o programadores. A medida que la audiencia del producto creció, se hizo
necesario agregar escritores y editores técnicos profesionales al proceso. En la
actualidad, IBM y otras empresas buscan desarrollar información de productos en
función de lo que los usuarios realmente necesitan hacer al usar el producto.
En esta vista orientada a tareas, la información del producto puede dividirse y
organizarse físicamente en estas categorías de tareas: evaluación, planificación,
configuración o instalación, personalización, administración, uso y mantenimiento del
producto.
La documentación a menudo se crea directamente en el producto como parte
de la interfaz de usuario y en las páginas de ayuda. Los manuales técnicos impresos
están cada vez más disponibles en los sitios web de las empresas en forma de
archivos de Adobe Acrobat Portable Document Format (PDF) o en páginas HTML.
IBM y Microsoft se encuentran entre las editoriales más grandes del mundo.
Teniendo esta definición en mente, la tabla nos muestra la falta de detalles que
existen hacia la documentación por parte de CodeIgniter; le siguen CakePHP y
Symfony con tutoriales y referencias de las APIS, las cuales ayudan bastante a los
desarrolladores a tener una curva de aprendizaje más holgada.
Finalmente, tenemos a Laravel incluyendo en sus características de
documentación, lecciones de videos las cuales facilitan bastante al momento de
aclarar puntos importantes de las propiedades y características del framework.
Por lo tanto, podemos concluir con gran inclinación hacia el uso del framework
Laravel, puesto que, una vez considerando el año de salida, un poco de su historia,
sus ventajas y desventajas; así como sus características principales, su escalabilidad,
curva de aprendizaje, y adaptabilidad a cualquier proyecto; uno se puede dar cuenta
de la relevancia que tiene hoy en día un framework con estas cualidades al momento
de querer desarrollar un sistema en línea.
Por supuesto, es claramente posible que, con el avance de las tecnologías de
información, estas herramientas vayan evolucionando hacia la adaptabilidad del
usuario, causando una gran diferencia en comparación a la investigación y análisis en
el tiempo en el que se es redactado este documento de investigación.
49
Capítulo III. Metodología
_____________________________________________
En este capítulo se define el concepto de la metodología de
investigación utilizada en esta investigación. De igual manera, se
contesta al por qué utilizarla en este trabajo de investigación.
50
Metodología
Este documento se utiliza la investigación a diferentes aspectos técnicos y teóricos de
los framework de desarrollo Web de PHP más populares por medio de la comparación
de cualidades, ventajas, desventajas, diferencias, similitudes, entre otras cuestiones
que definen a estas herramientas.
Por lo tanto, la metodología utilizada para esta investigación fue la metodología
comparativa.
¿Qué es la metodología comparativa?
El método comparativo es el procedimiento de la comparación sistemática de casos
de análisis que en su mayoría se aplica con fines de generalización empírica y de la
verificación de hipótesis. Cuenta con una larga tradición en la metodología de las
ciencias sociales; aunque también se encuentra en otras disciplinas.
El método comparativo suele ser popular en un estado temprano de la evolución
de un campo de investigación, cuando los científicos intentan salir del nivel inicial de
los estudios de caso exploratorios a un nivel más avanzado de estructuras teóricas
generales o leyes, como invariantes, causalidad o evolución.
El diseño de la investigación comparativa es simple. Estudiamos ejemplares
que pertenecen al mismo grupo pero que difieren en algunos aspectos. Estas
diferencias llegan a ser el foco de la examinación. La meta es descubrir porqué los
casos son diferentes: para revelar la estructura subyacente general que genera o
permite tal variación.
Si deseamos obtener resultados que sean válidos en un cierto grupo, debemos
definir éste como una población de objetos, de casos, y a partir de ese momento
debemos considerar qué tamaño ha de tener la muestra de esta población que
tenemos que estudiar. Al comienzo de la redacción de este documento se deja en
claro esta población limitando los objetos de investigación a cuatro frameworks de
desarrollo Web PHP. Muchas veces una muestra de solamente dos ejemplares o
casos no es bastante para eliminar perturbaciones y variaciones indeseadas; en ese
caso tendríamos que comparar varios pares, o clases de casos o ejemplares. En otras
palabras, el diseño de nuestra investigación se convierte en una forma
de clasificación.
¿Por qué la metodología comparativa?
En este documento nos interesa estudiar los framework de desarrollo Web
PHP, y más concretamente el identificar el mejor de entre ellos. Formulada de este
modo, la problemática es demasiado amplia para constituir una pregunta de
investigación definida; es preciso acotar el esfuerzo del analista a un aspecto
específico de esta cuestión general. Una buena pregunta de investigación debe
51
indagar sobre un fenómeno empírico que presente variación en el mundo real (por
ejemplo, ¿Qué es un framework de desarrollo en PHP?, ¿Cuáles son las
características principales de un framework de desarrollo en PHP?, ¿Qué diferencias
técnicas existen entre los framework de desarrollo en PHP más populares?, ¿Cuál
puede ser considerado el mejor framework de desarrollo en PHP?). Es justamente
esta variación la que inspira la cuestión concreta a ser investigada: ¿por qué en ciertos
casos ocurre algo (Y) y en otros no (no-Y)?
52
Capítulo IV. Resultados y conclusiones
_____________________________________________
En este capítulo se concluye con una respuesta a las preguntas
definidas al comienzo de esta investigación. Estos resultados y
conclusiones se apoyan por medio de una tabla definiendo la hipótesis
de la investigación como verdadera.
53
Resultados.
Los resultados obtenidos de esta investigación son mostrados a manera de lista a
continuación:
TABLA 4.1 - Tiempo de realización de un sistema web.
Como se puede observar en la gráfica anterior, se reafirma la hipótesis
formulada al principio de este documento de investigación. Los framework de
desarrollo PHP ayudan a la productividad en relación al tiempo invertido a la
realización de un proyecto tipo sistema de información web.
Obtención una mayor comprensión y acercamiento de la situación actual del
desarrollo de aplicaciones Web basadas en un framework de desarrollo de
PHP.
Poder diferenciar entre los framework de desarrollo Web más populares, sus
características, sus ventajas, desventajas, asimismo sus diferencias y
similitudes.
Expresar de manera gráfica las diferencias técnicas que representan cada
una de estas herramientas para el desarrollo de aplicaciones Web.
Un crecimiento profesional, al haber investigado, analizado, y redactado un
documento informativo relacionado a la programación de páginas web por
medio de un framework de desarrollo en PHP.
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
CakePHP Laravel Sympfony CodeIgniter
Po
rcen
taje
de
tiem
po
de
real
izac
ión
de
un
p
roye
cto
.
Título del eje
Tiempo de realización de un sistema web.
Usando un framework PHP. Usando PHP puro Tiempo hacia la fecha límite.
54
Conclusiones.
Sabemos que un framework de desarrollo en PHP no es nada más que una librería de
directorios los cuales están ahí para ayudar a los desarrolladores de aplicaciones
Web. Un framework brinda soluciones estandarizadas a problemas típicos que aplican
dentro de la etapa de desarrollo de un sistema de información Web. Sabemos que sus
principales características son la escalabilidad y adaptabilidad a cualquier proyecto
enfocado a sistema de información Web.
Añadiendo a lo anterior; el aumento del uso de Internet entre empresas e
individuos ha influido en la forma en cómo se ejecutan las empresas. Esto ha llevado
a la adopción generalizada de aplicaciones web, con herramientas de desarrollo como
los framework de desarrollo en PHP, a medida que las empresas cambian de modelos
tradicionales a modelos basados en la nube y en las redes. Los framework de
desarrollo en PHP les brindan a las empresas la capacidad de simplificar sus
operaciones, agilizar la escritura de código, manejar el uso de queries a bases de
datos, disminuir esfuerzo de producción, aumentar la eficiencia y reducir los costos.
Estos framework de desarrollo en PHP, como lo son Laravel, CakePHP,
Simfony, y CodeIgniter, brindan funcionalidades las cuales, tomando en cuenta sus
características de seguridad, servicio en la nube, adaptabilidad y escalabilidad, la
empresa con un proyecto se tomará la tarea de analizar las características en relación
a las necesidades de su proyecto para así poder elegir uno el cual se adapte a las
necesidades de su aplicación web.
De esta manera se puede concluir con un resultado de hipótesis correcta, en
vista del análisis realizado, no cabe duda la importancia de estas herramientas de
desarrollo, y su impacto en el área de desarrollo y programación de sistemas Web,
incluyendo la estabilidad empresarial dentro del mercado, tanto como los empleados
encargados de utilizar directamente estas herramientas adaptándolos a los proyectos
presentes favoreciendo el tiempo y esfuerzo a implementar.
Sin embargo, existen una gran variedad de herramientas similares, las cuales
se enfocan en otras características al momento de desarrollar una aplicación web. Por
lo tanto, existe un alcance más amplio y fácilmente accesible al uso de estas
herramientas debido a la cantidad de ellas existentes en el mercado, asimismo como
la relevancia que tienen hoy en día en el campo de la programación Web.
55
Bibliografía.
[01] Sadoski, Darleen. (19 octubre, 1997) Client/Server Software
Architectures--An Overview, Software Technology Roadmap. Recuperado el 20
de septiembre de 2017.
[02] Amos Ndegwa. (31 mayo, 2016) What is a Web Application? MaxCDN,
21. Recuperado el 25 de septiembre de 2017, en
https://www.maxcdn.com/one/visual-glossary/web-application/
[03] Daniel Nations. (19 octubre, 2016) Improve Your Understanding of Web
Applications. LifeWire, 21. Recuperado el 04 de octubre de 2017, en
https://www.lifewire.com/what-is-a-web-application-3486637
[04] Diego, “HTML5: ¿Qué es? Y ¿Cómo usarlo?” [online]. Recuperado el 04
de octubre de 2017. Disponible en: http://www.trazos-
web.com/2010/02/01/html5-que-es-y-como-usarlo/
[05] genbetadev, “Breve introducción a CSS3” [online]. Recuperado el 04 de
octubre de 2016. Disponible en: http://www.genbetadev.com/desarrollo-
web/breve-introduccion-a-css3
[06] CodersEye, “Best PHP Frameworks” [online]. Recuperado el 04 de
octubre de 2017. Disponible en: https://coderseye.com/best-php-frameworks-
for-web-developers/#Best_PHP_frameworks_Compared
[07] Mozilla, “Acerca de JavaScript”, [online]. Recuperado el 04 de octubre de
2017. Disponible en:
https://developer.mozilla.org/es/docs/Web/JavaScript/Acerca_de_JavaScrip
[08] JQuery, “What is JQuery” [online]. Recuperado el 15 de octubre de 2017.
Disponible en: https://jquery.com/
[09] PHP, “What is PHP” [online]. Recuperado el 15 de octubre de 2017.
Disponible en: https://php.net/manual/es/intro-whatis.php
[10] Laravel, “Laravel” [online]. Recuperado el 29 de octubre de 2017.
Disponible en https://laravel.com/
[11] CodeIgniter, “CodeIgniter Web Framework” [online]. Recuperado el 29
de octubre de 2017. Disponible en: https://codeigniter.com/
[12] Symfony, “Symfony” [online]. Recuperado el 29 de octubre de 2017.
Disponible en: http://symfony.es/
56
[13] CakePHP, “CakePHP - Build fast, grow solid” [online]. Recuperado el 29
de octubre de 2017. Disponible en: https://cakephp.org/
[14] EllisLab, “About – History” [online]. Recuperado el 29 de octubre de 2017.
Disponible en: https://ellislab.com/about/
[15] Ecured, “Ecured” [online]. Recuperado el 29 de octubre de 2017.
Disponible en: https://www.ecured.cu/
[16] UV, “Metodología Observacional” [online]. Recuperado el 29 de octubre
de 2017. Disponible en: https://www.uv.es/~friasnav/Observacional.pdf
[17] Pitt, “Fundamentos de metodologías de investigación” [online].
Recuperado el 29 de octubre de 2017. Disponible en:
http://www.pitt.edu/~asp27/USAL/2007.Fundamentos.pdf
[18] MDN web docs, “HTML” [online]. Recuperado el 07 de noviembre de
2017. Disponible en: https://developer.mozilla.org/es/docs/Web/HTML
[19] MDN web docs, “HTML” [online]. Recuperado el 07 de noviembre de
2017. Disponible en: https://developer.mozilla.org/es/docs/Glossary/HTML
[20] MDN web docs. “JavaScript” [online]. Recuperado el 07 de noviembre de
2017. Disponible en: https://developer.mozilla.org/es/docs/Glossary/JavaScript
[21] MDN web docs. “JavaScript” [online]. Recuperado el 07 de noviembre de
2017. Disponible en: https://developer.mozilla.org/es/docs/Learn/JavaScript
[22] CODEPROJECT. “Simple example of MVC” [online]. Recuperado el 11
de noviembre de 2017. Disponible en:
https://www.codeproject.com/Articles/25057/Simple-Example-of-MVC-Model-
View-Controller-Design
[23] Desarrolloweb.com. “¿Qué es MVC?” [online]. Recuperado el 11 de
noviembre de 2017. Disponible en:
https://desarrolloweb.com/articulos/que-es-mvc.html
[24] Amazon S3. “Amazon S3” [online]. Recuperado el 29 de noviembre de
2017. Disponible en: https://aws.amazon.com/s3/
[25] MySQL. “MySQL Enterprise Edition” [online]. Recuperado el 29 de
noviembre de 2017. Disponible en: https://www.mysql.com/
57
[26] PostgreSQL. “The oficial site of PostgreSQL” [online]. Recuperado el 29
de noviembre de 2017. Disponible en: https://www.postgresql.org/
[27] XML. “¿Qué es XML? | Manual de XML” [online]. Recuperado el 29 de
noviembre de 2017. Disponible en: www.mundolinux.info/que-es-xml.htm
[28] MDN web docs. “CSS” [online]. Recuperado el 29 de noviembre de 2017.
Disponible en: https://developer.mozilla.org/es/docs/Web/CSS
[29] AppMonks. “Using a framework to create better choices“ [online].
Recuperado el 29 de noviembre de 2017. Disponible en:
http://www.appmonks.net/id/54/using-a-framework-to-create-better-choices/
[30] noeticforce. “Best PHP frameworks for modern web development“
[online]. Recuperado el 29 de noviembre de 2017. Disponible en:
http://noeticforce.com/best-php-frameworks-for-modern-web-development
[31] OpenSource. “Which PHP Framework is better for you?“ [online].
Recuperado el 29 de noviembre de 2017. Disponible en:
https://opensource.com/business/16/6/which-php-framework-right-you
[32] InsaneLabs. “Laravel. The best PHP Framework of 2017“ [online].
Recuperado el 29 de noviembre de 2017. Disponible en:
https://insanelab.com/blog/web-development/laravel-best-php-framework-
2017/
[33] Fdlwiki ELP. “Licencia MIT” [online]. Recuperado el 29 de noviembre de
2017. Disponible en: wikis.fdi.ucm.es/ELP/Licencia_MIT
[34] GitHub. “PHP Framework Benchmark” [online]. Recuperado el 29 de
noviembre de 2017. Disponible en: https://github.com/kenjis/php-framework-
benchmark
58
Glosario.
A
Ajax: Con Ajax, se hace posible realizar peticiones al servidor y obtener
respuesta de este en segundo plano (sin necesidad de recargar la página web
completa) y usar esos datos para, a través de JavaScript, modificar los
contenidos de la página creando efectos dinámicos y rápidos.
Amazon S3: Amazon S3 es almacenamiento para Internet. Es un servicio de
almacenamiento sencillo que ofrece a los desarrolladores de software una
infraestructura de almacenamiento de datos de gran escalabilidad, fiable y de
baja latencia con costos muy bajos.
API Web: Una API es un conjunto de funciones y procedimientos que cumplen
una o muchas funciones con el fin de ser utilizadas por otro software. Las
siglas API vienen del inglés Application Programming Interface. En español
sería Interfaz de Programación de Aplicaciones.
Aplicación WEB: Aquellas herramientas que los usuarios pueden utilizar
accediendo a un servidor web a través de internet o de una intranet mediante
un navegador.
Arreglos: Grupo o colección finita, homogénea y ordenada de elementos.
Un arreglo es un conjunto de datos o una estructura de datos homogéneos
que se encuentran ubicados en forma consecutiva en la memoria RAM (sirve
para almacenar datos en forma temporal).
C
Cliente: Es una aplicación informática o un ordenador que consume un
servicio remoto en otro ordenador conocido como servidor, normalmente a
través de una red de telecomunicaciones.
Controlador: Es una capa que sirve de enlace entre las vistas y los modelos,
respondiendo a los mecanismos que puedan requerirse para implementar las
necesidades de nuestra aplicación.
CSS: ......... CSS (Cascading Style Sheets, u Hojas de Estilo en Cascada) es la
tecnología desarrollada por el World Wide Web Consortium (W3C) con el fin
de separar la estructura de la presentación.
CRUD: En informática, CRUD es el acrónimo de "Crear, Leer, Actualizar y
Borrar" (del original en inglés: Create, Read, Update and Delete), que se usa
para referirse a las funciones básicas en bases de datos o la capa de
persistencia en un software.
59
CLI: La interfaz de línea de comandos o interfaz de línea de órdenes (en
inglés, command-line interface, CLI) es un método que permite a los usuarios
dar instrucciones a algún programa informático por medio de una línea de
texto simple.
F
Framework de desarrollo: Un framework para aplicaciones web es
un framework diseñado para apoyar el desarrollo de sitios web dinámicos,
aplicaciones web y servicios web. Este tipo de frameworks intenta aliviar el
exceso de carga asociado con actividades comunes usadas en
desarrollos web.
H
HTML: HTML es un lenguaje de marcado que se utiliza para el desarrollo de
páginas de Internet. Se trata de la sigla que corresponde a HyperText Markup
Language, es decir, Lenguaje de Marcas de Hipertexto, que podría ser
traducido como Lenguaje de Formato de Documentos para Hipertexto.
J
JavaScript: JavaScript es un lenguaje de programación que se utiliza
principalmente para crear páginas web dinámicas. Una página web dinámica
es aquella que incorpora efectos como texto que aparece y desaparece,
animaciones, acciones que se activan al pulsar botones y ventanas con
mensajes de aviso al usuario.
JQuery: JQuery es una librería de JavaScript (JavaScript es un lenguaje de
programación muy usado en desarrollo web). Esta librería de código abierto,
simplifica la tarea de programar en JavaScript y permite agregar interactividad
a un sitio web sin tener conocimientos del lenguaje.
JSON: Acrónimo de JavaScript Object Notation, es un formato ligero para el
intercambio de datos. JSON es un subconjunto de la notación literal de
objetos de JavaScript que no requiere el uso de XML
60
M
MySQL: MySQL es un sistema de gestión de base de datos relacional
(RDBMS) de código abierto, basado en lenguaje de consulta estructurado
(SQL). MySQL se ejecuta en prácticamente todas las plataformas, incluyendo
Linux, UNIX y Windows.
Modelo de datos: Un modelo de datos es un lenguaje orientado a hablar de
una Base de Datos. Típicamente un modelo de datos permite describir: Las
estructuras de datos de la base: El tipo de los datos que hay en la base y la
forma en que se relacionan.
Módulo: Un módulo es una porción de un programa de ordenador. De las
varias 70 tareas que debe realizar un programa para cumplir con su función u
objetivos, un módulo realizará, comúnmente, una de dichas tareas (o varias,
en algún caso).
O
ORM: Object-Relational mapping, o lo que es lo mismo, mapeo de objeto-
relacional, es un modelo de programación que consiste en la transformación
de las tablas de una base de datos, en una serie de
entidades que simplifiquen las tareas básicas de acceso a los datos para el
programador.
P
PHP: PHP es un lenguaje de programación de propósito general de código
del lado del servidor originalmente diseñado para el desarrollo web de
contenido dinámico.
POO: La programación orientada a objetos (POO, u OOP según sus siglas en
inglés) es un paradigma de programación que usa objetos en sus
interacciones, para diseñar aplicaciones y programas informáticos. Está
basada en varias técnicas, incluyendo herencia, cohesión, abstracción,
polimorfismo, acoplamiento y encapsulamiento.
PostgreSQL: PostgreSQL es un sistema de gestión de bases de datos
relacional orientado a objetos y libre, publicado bajo la licencia PostgreSQL,
similar a la BSD o la MIT.
61
S
Servidor: Es una aplicación en ejecución capaz de atender las peticiones de
un cliente y devolverle una respuesta en concordancia.
Servicios Web: Un web service es un conjunto de protocolos y estándares que
sirven para intercambiar datos entre aplicaciones. Permiten la
interoperabilidad entre plataformas de distintos fabricantes por medio de
protocolos estándar y abiertos.
V
Vista: Plantilla de una página web.
W
Web 2.0: El término Web 2.0 o Web social comprende aquellos sitios web que
facilitan el compartir información, la interoperabilidad, el diseño centrado en el
usuario y la colaboración en la World Wide Web.
X
XML: XML es un Lenguaje de Etiquetado Extensible muy simple, pero
estricto que juega un papel fundamental en el intercambio de una gran
variedad de datos. Es un lenguaje muy similar a HTML, pero su función
principal es describir datos y no mostrarlos como es el caso de HTML.
XSS: XSS es un ataque de inyección de código malicioso para su posterior
ejecución que puede realizarse a sitios web, aplicaciones locales e incluso al
propio navegador.