Frameworks PHP
Los frameworks son herramientas que aceleran el desarrollo proporcionando estructura, componentes reutilizables y buenas practicas. Conocer el panorama te ayudara a elegir el camino adecuado.
¿Qué es un framework?
Un framework es un conjunto de librerias y herramientas organizadas que proporcionan una estructura base para desarrollar aplicaciones. En lugar de empezar desde cero, usas componentes ya probados.
Los frameworks PHP tipicamente incluyen:
- Sistema de rutas para manejar URLs
- ORM para trabajar con bases de datos
- Motor de plantillas para las vistas
- Autenticacion y autorizacion
- Validacion de datos
- Manejo de sesiones y cache
¿Por qué usar un framework?
Usar un framework tiene multiples ventajas:
- Productividad: No reinventas la rueda
- Seguridad: Protecciones integradas contra ataques comunes
- Estructura: Organizacion clara del proyecto
- Comunidad: Documentacion, paquetes y soporte
- Empleo: Las empresas buscan desarrolladores con experiencia en frameworks
Laravel
Laravel es el framework PHP mas popular. Destaca por su sintaxis elegante y su ecosistema completo. Es excelente para aprender y para proyectos de cualquier tamano.
<?php
// Ejemplo de ruta en Laravel
Route::get('/usuarios/{id}', function (int $id) {
$usuario = User::findOrFail($id);
return view('usuarios.show', ['usuario' => $usuario]);
});
// Controlador
class UsuarioController extends Controller
{
public function index()
{
$usuarios = User::all();
return view('usuarios.index', compact('usuarios'));
}
public function store(Request $request)
{
$validated = $request->validate([
'nombre' => 'required|max:255',
'email' => 'required|email|unique:users',
]);
User::create($validated);
return redirect('/usuarios');
}
}
Caracteristicas destacadas de Laravel:
- Eloquent ORM para bases de datos
- Blade como motor de plantillas
- Artisan CLI para tareas comunes
- Migraciones de base de datos
- Sistema de colas y eventos
- Testing integrado
Symfony
Symfony es un framework robusto y modular, usado en proyectos empresariales. Muchos de sus componentes son utilizados por otros frameworks, incluyendo Laravel.
<?php
// Ejemplo de controlador en Symfony
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class UsuarioController extends AbstractController
{
#[Route('/usuarios', name: 'usuarios_lista')]
public function index(): Response
{
$usuarios = $this->getDoctrine()
->getRepository(Usuario::class)
->findAll();
return $this->render('usuarios/index.html.twig', [
'usuarios' => $usuarios,
]);
}
}
Caracteristicas de Symfony:
- Arquitectura de componentes reutilizables
- Doctrine ORM
- Twig como motor de plantillas
- Excelente para APIs y microservicios
- Inyeccion de dependencias avanzada
Otros frameworks
CodeIgniter
Framework ligero y facil de aprender. Bueno para proyectos pequenos o para quien busca algo menos complejo que Laravel o Symfony.
Slim
Micro-framework ideal para APIs. Minimalista y rapido. Perfecto cuando no necesitas todas las funcionalidades de un framework completo.
Laminas (antes Zend)
Framework empresarial con componentes de alta calidad. Usado en proyectos que requieren maxima flexibilidad.
Patron MVC
La mayoria de frameworks PHP usan el patron MVC (Model-View-Controller), que separa la aplicacion en tres capas:
- Model: Logica de negocio y acceso a datos
- View: Presentacion (HTML, JSON, etc.)
- Controller: Recibe peticiones y coordina Model y View
<?php
declare(strict_types=1);
// Estructura tipica de un proyecto MVC
//
// app/
// Controllers/
// UsuarioController.php
// Models/
// Usuario.php
// Views/
// usuarios/
// index.php
// show.php
// public/
// index.php (punto de entrada)
// routes/
// web.php
// Flujo de una peticion:
// 1. Usuario accede a /usuarios
// 2. El router llama a UsuarioController::index()
// 3. El controlador obtiene datos del Model Usuario
// 4. El controlador pasa los datos a la View
// 5. La View genera el HTML que ve el usuario
Cual elegir
La eleccion depende de varios factores:
- Laravel: Si quieres productividad rapida y gran comunidad
- Symfony: Si buscas flexibilidad y proyectos empresariales
- Slim: Si solo necesitas una API simple
- CodeIgniter: Si prefieres algo más ligero y sencillo
Si estas empezando, Laravel es la mejor opcion. Tiene la mejor documentacion, la comunidad mas activa y la curva de aprendizaje mas suave.
Ejercicios
Ejercicio 1: Investigar Laravel
Visita la documentacion oficial de Laravel en laravel.com y responde: Que es Eloquent? Que es Artisan? Que es Blade?
Ver solucion
Eloquent:
Es el ORM (Object-Relational Mapper) de Laravel.
Permite trabajar con la base de datos usando clases PHP
en lugar de escribir SQL directamente.
Cada tabla tiene un "Model" que representa sus datos.
Artisan:
Es la interfaz de linea de comandos de Laravel.
Permite ejecutar tareas como crear controladores,
ejecutar migraciones, limpiar cache, etc.
Ejemplo: php artisan make:controller UsuarioController
Blade:
Es el motor de plantillas de Laravel.
Permite escribir HTML con sintaxis especial para
mostrar variables, bucles y condicionales.
Los archivos terminan en .blade.php
Ejercicio 2: Estructura MVC
Dibuja (o describe) como fluye una peticion en MVC cuando un usuario accede a la URL /productos/5 para ver un producto.
Ver solucion
Flujo de la peticion /productos/5:
1. USUARIO -> Navegador hace peticion GET /productos/5
2. ROUTER -> Analiza la URL y encuentra la ruta correspondiente
Ruta: /productos/{id} -> ProductoController::show($id)
3. CONTROLLER -> ProductoController recibe la peticion
- Extrae el ID (5) de la URL
- Llama al Model para obtener los datos
4. MODEL -> Producto::find(5)
- Consulta la base de datos
- Devuelve el producto con ID 5 (o null si no existe)
5. CONTROLLER -> Recibe los datos del Model
- Pasa los datos a la View
- return view('productos.show', ['producto' => $producto])
6. VIEW -> productos/show.blade.php
- Genera el HTML con los datos del producto
- Nombre, precio, descripcion, imagen, etc.
7. USUARIO <- Navegador muestra la pagina del producto
Ejercicio 3: Comparar frameworks
Busca informacion y crea una tabla comparando Laravel y Symfony en estos aspectos: curva de aprendizaje, documentacion, ORM usado, motor de plantillas.
Ver solucion
COMPARACION LARAVEL VS SYMFONY
================================
| Aspecto | Laravel | Symfony |
|---------------------|------------------|------------------|
| Curva aprendizaje | Suave | Moderada-Alta |
| Documentacion | Excelente | Muy buena |
| ORM | Eloquent | Doctrine |
| Motor plantillas | Blade | Twig |
| Enfoque | Convencion | Configuracion |
| Ideal para | Startups, MVPs | Empresas grandes |
| CLI | Artisan | Console |
| Comunidad | Muy grande | Grande |
Notas adicionales:
- Laravel prioriza la velocidad de desarrollo
- Symfony prioriza la flexibilidad y escalabilidad
- Ambos son excelentes opciones profesionales
- Laravel usa internamente componentes de Symfony
Has encontrado un error o tienes una sugerencia para mejorar esta leccion?
EscribenosTe está gustando el curso?
Tenemos cursos premium con proyectos reales y soporte personalizado.
Descubrir cursos premium