Leccion 73 de 75 12 min de lectura

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
<?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
<?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
<?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
Recomendacion

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

Te está gustando el curso?

Tenemos cursos premium con proyectos reales y soporte personalizado.

Descubrir cursos premium