Ricardo Pérez López
IES Doñana, curso 2020/2021
Un framework es un software que proporciona una funcionalidad genérica que el programador puede cambiar selectivamente escribiendo código específico para una aplicación en particular.
Un framework proporciona una forma estándar de programar y desplegar aplicaciones.
Un framework es un entorno de software universal y reutilizable que proporciona funcionalidades concretas como parte de una plataforma software más grande para facilitar el desarrollo de aplicaciones.
Los frameworks pueden incluir programas de soporte, compiladores, librerías de código, conjuntos de utilidades y APIs que, juntos, forman los diferentes componentes que permiten desarrollar un proyecto o sistema.
Un framework se puede considerar como una aplicación genérica incompleta y configurable a la que podemos añadirle las últimas piezas para construir una aplicación concreta.
Los objetivos principales que persigue un framework son:
Un framework para aplicaciones web es un framework diseñado para facilitar el desarrollo de sitios web dinámicos, aplicaciones web y servicios web.
Este tipo de frameworks intenta aliviar el exceso de trabajo asociado con actividades comunes usadas en desarrollos web.
Por ejemplo, muchos frameworks proporcionan bibliotecas para acceder a bases de datos, estructuras para plantillas y gestión de sesiones, y con frecuencia facilitan la reutilización de código.
Ventajas
Inconvenientes
Ventajas
Inconvenientes
Ventajas
Inconvenientes
Ventajas
Inconvenientes
Ventajas
Inconvenientes
Un microframework es un término usado para referirse a un framework web minimalista, en contraste con un framework completo o full-stack.
Un microframework carece de muchas funcionalidades propias de un framework web completo, como por ejemplo:
Normalmente, un microframework se encarga de:
A menudo se diseñan específicamente para crear las API de otro servicio o aplicación.
“Micro” does not mean that your whole web application has to fit into a single Python file (although it certainly can), nor does it mean that Flask is lacking in functionality. The “micro” in microframework means Flask aims to keep the core simple but extensible. Flask won’t make many decisions for you, such as what database to use. Those decisions that it does make, such as what templating engine to use, are easy to change. Everything else is up to you, so that Flask can be everything you need and nothing you don’t.
By default, Flask does not include a database abstraction layer, form validation or anything else where different libraries already exist that can handle that. Instead, Flask supports extensions to add such functionality to your application as if it was implemented in Flask itself. Numerous extensions provide database integration, form validation, upload handling, various open authentication technologies, and more. Flask may be “micro”, but it’s ready for production use on a variety of needs.
Usando Silex:
Las diferencias cada vez son menores y las fronteras son cada vez menos nítidas.
Hay frameworks full-stack que pueden funcionar como microframeworks usando algunos de sus componentes y prescindiendo de otros (por ejemplo: Yii).
Hay microframeworks a los que se les puede incorporar componentes hasta acabar teniendo la misma funcionalidad que un framework full-stack (por ejemplo: Symfony HttpKernel).
Los frameworks tienen tres características clave que los distinguen de las librerías:
Además, los frameworks suelen imponer una estructura interna al código de la aplicación (en directorios, archivos y contenido de los mismos), mientras que las librerías no.
La diferencia más importante es que el control se invierte:
El código de la aplicación llama a la librería, por lo que el control lo tiene la aplicación.
El framework llama al código de la aplicación, por lo que el control lo tiene el framework.
Usa la herramienta Google Trends para determinar la popularidad de los principales frameworks para PHP. ¿Cuál es el más popular? ¿Cuál ha tenido un crecimiento más rápido?
¿Crees que es importante la popularidad de un framework a la hora de seleccionarlo como herramienta de ayuda al desarrollo de un proyecto web?
Busca una comparativa de rendimiento de los principales frameworks para PHP y ordénalos según dicha comparativa. ¿Por qué hay algunos que son espectacularmente más rápidos que el resto?
¿Qué ventajas fundamentales tiene el framework Yii? ¿Cuál dirías que es su principal inconveniente?
Ídem para Laravel.
Investiga otros frameworks web para PHP.
Investiga otros frameworks web para otros lenguajes como Ruby o Python.
Investiga otros microframeworks para PHP.
Los modelos representan la parte de la aplicación que implementa la lógica de negocio y las entidades de datos. Ésto significa que son responsables de la recuperación de datos convirtiéndolos en conceptos significativos para la aplicación, así como su procesamiento, validación, asociación y cualquier otra tarea relativa a la manipulación de dichos datos.
En general, representan los principales conceptos en torno a los cuales se desea implementar un programa.
Por ejemplo, en el caso de una red social, la capa de modelo se haría cargo de tareas tales como guardar datos del usuario, el amacenamiento de asociaciones con amigos, el almacenamiento y la recuperación de fotos de los usuarios, encontrar sugerencias de nuevos amigos, etc.
Por tanto, en este caso, los modelos podrían ser Amigo
, Usuario
, Comentario
y Foto
.
Las vistas hacen una presentación de los datos de los modelos estando separadas de los mismos.
Por ejemplo, como los modelos devuelven un conjunto de datos, las vistas los usarían para hacer una página HTML que los contenga. O un resultado con formato XML o JSON para que otras aplicaciones puedan consumir.
Las vistas no se limitan únicamente a HTML o texto que represente los datos, sino que pueden ser utilizadas para ofrecer una amplia variedad de formatos en función de sus necesidades tales como videos, música, documentos y cualquier otro formato que se pueda imaginar.
Los controladores gestionan las peticiones de los usuarios. Son responsables de responder a la información solicitada con la ayuda tanto de los modelos como de las vistas.
Los controladores pueden ser vistos como administradores cuidando de que todos los recursos necesarios para completar una tarea se deleguen a los trabajadores más adecuados. Espera peticiones de los clientes, comprueba su validez de acuerdo a las normas de autenticación o autorización, delega la búsqueda de datos a los modelos y selecciona el tipo de respuesta más adecuado según las preferencias del cliente. Finalmente delega este proceso de presentación a las vistas.
Los modelos son subclases de yii\base\Model
.
yii\db\ActiveRecord
.Las vistas son plantillas (archivos .php
) que combinan HTML y PHP (y posiblemente JavaScript, CSS, etc.).
Los controladores son subclases de yii\base\Controller
.
En las aplicaciones web se usa yii\web\Controller
.
En las aplicaciones de consola se usa yii\console\Controller
.
¿Qué es un modelo?
¿Qué es una vista?
¿Qué es un controlador?
¿Qué componente (modelo, vista o controlador) se encargaría de las siguientes responsabilidades?
Comprobar si un pedido es válido.
Impedir que se pueda vender un producto sin existencias.
Atender la petición de alta de un nuevo usuario.
Solicitar los nuevos datos del producto durante una modificación del mismo.
Yii es un framework de PHP de alto rendimiento, basado en componentes para desarrollar aplicaciones web modernas en poco tiempo. El nombre Yii significa “simple y evolutivo” en chino. También se puede considerar como un acrónimo de Yes It Is (que en inglés significa Sí, eso es).
Yii es un framework genérico de programación web, lo que significa que se puede utilizar para desarrollar todo tipo de aplicaciones web en PHP. Debido a su arquitectura basada en componentes y a su sofisticada compatibilidad de caché, es especialmente apropiado para el desarrollo de aplicaciones de gran envergadura, como portales, foros, sistemas de gestión de contenidos (CMS), proyectos de comercio electrónico, servicios web compatibles con la arquitectura REST y muchas más.
Actualmente existen dos versiones principales de Yii:
Para la versión 1.1, que es de la generación anterior, actualmente sólo se ofrece mantenimiento. La versión 2.0 está completamente reescrita y adopta las últimas tecnologías y protocolos, incluidos Composer, PSR, espacios de nombres, traits, etc.
La versión 2.1 recibe actualmente el principal esfuerzo de desarrollo y se prevé que se publique en 2018.
Yii 2 requiere PHP 5.4.0 o una versión posterior. Se pueden encontrar requisitos más detallados de características individuales ejecutando el script de comprobación requirements.php
incluido en cada versión de Yii.
Para utilizar Yii se requieren conocimientos básicos de programación orientada a objetos (POO), porque el framework Yii se basa íntegramente en esta tecnología.
Yii 2 hace uso también de las últimas características de PHP, como espacios de nombres y traits. Comprender estos conceptos ayuda a entender mejor Yii 2.
La instalación estándar de Yii instala tanto el framework como una plantilla de proyecto.
Una plantilla de proyecto es un proyecto Yii funcional que implementa algunas características básicas como: login, formulario de contacto, etc.
Aunque no resulta imprescindible usar una plantilla, se recomienda encarcidamente usar una de las que proporciona Yii 2 como punto de partida para un nuevo proyecto.
Para crear un proyecto nuevo con la estructura de la plantilla básica:
Creará un directorio llamado <directorio>
donde se volcará el contenido de la plantilla y quedará el proyecto listo para empezar su desarrollo.
Yii 2 proporciona dos plantillas oficiales:
yii2-app-basic
)yii2-app-advanced
).La plantilla básica es adecuada para desarrollar el 90% de las aplicaciones web. Difiere de la plantilla avanzada principalmente en cómo está organizado el código.
A los principiantes en Yii 2 se les recomienda usar la plantilla básica por su sencillez y su funcionalidad.
Nosotros empezaremos usando la plantilla básica y luego pasaremos a usar una ligera variante.
Feature | Básica | Avanzada |
---|---|---|
Estructura de proyecto | ✔ | ✔ |
Controlador Site | ✔ | ✔ |
Login/logout de usuarios | ✔ | ✔ |
Formularios | ✔ | ✔ |
Conexión a BBDD | ✔ | ✔ |
Comandos de consola | ✔ | ✔ |
Asset bundles | ✔ | ✔ |
Tests de Codeception | ✔ | ✔ |
Twitter Bootstrap | ✔ | ✔ |
Aplicaciones front-end y back-end | ✔ | |
Modelo de usuario listo para usar | ✔ | |
Registro de usuarios y recuperación de contraseñas | ✔ |