PHP: El Lenguaje Web Moderno
Domina PHP moderno con Laravel, Composer y las mejores prácticas actuales
PHP: El Lenguaje Web Moderno
PHP sigue siendo uno de los lenguajes más utilizados en la web, alimentando aproximadamente el 77% de todos los sitios, incluyendo WordPress, Facebook y Wikipedia. Con PHP 8.x, el lenguaje experimentó una transformación significativa, incorporando características modernas como tipado fuerte, compilación JIT y atributos.
Mito desmentido: El PHP moderno es completamente diferente del PHP legado. Con frameworks como Laravel y Symfony, PHP rivaliza con cualquier stack moderno en productividad y elegancia.
Características de PHP 8.x
- JIT Compilation - Rendimiento significativamente mejorado
- Named Arguments - Argumentos nombrados para claridad
- Attributes - Metadatos nativos (como anotaciones)
- Match Expression - Switch más poderoso
- Constructor Promotion - Clases más concisas
- Union Types - Múltiples tipos permitidos
- Nullsafe Operator -
?->para encadenamiento seguro
Fundamentos Modernos
Tipos y Variables
<?php
declare(strict_types=1);
// Tipos escalares
$nombre = 'María'; // string
$edad = 25; // int
$altura = 1.68; // float
$activo = true; // bool
// Arrays
$frutas = ['manzana', 'banana', 'naranja'];
$usuario = [
'nombre' => 'María',
'email' => '[email protected]',
'edad' => 25
];
// Array destructuring
['nombre' => $nombre, 'email' => $email] = $usuario;
// Spread operator
$numeros = [1, 2, 3];
$masNumeros = [...$numeros, 4, 5, 6];
// Null coalescing
$valor = $usuario['telefono'] ?? 'No proporcionado';
// Nullsafe operator (PHP 8.0+)
$ciudad = $usuario?->direccion?->ciudad;
Clases Modernas
<?php
declare(strict_types=1);
// Constructor promotion (PHP 8.0+)
class Usuario
{
public function __construct(
public readonly int $id,
public string $nombre,
public string $email,
public bool $activo = true,
public ?\DateTimeImmutable $creadoEn = null
) {
$this->creadoEn ??= new \DateTimeImmutable();
}
public function saludar(): string
{
return "¡Hola, {$this->nombre}!";
}
public function desactivar(): void
{
$this->activo = false;
}
}
// Enums (PHP 8.1+)
enum Estado: string
{
case Pendiente = 'pendiente';
case Aprobado = 'aprobado';
case Rechazado = 'rechazado';
public function etiqueta(): string
{
return match($this) {
self::Pendiente => 'Esperando revisión',
self::Aprobado => 'Aprobado ✓',
self::Rechazado => 'Rechazado ✗',
};
}
}
// Readonly classes (PHP 8.2+)
readonly class Producto
{
public function __construct(
public string $nombre,
public float $precio,
public int $cantidad
) {}
public function valorTotal(): float
{
return $this->precio * $this->cantidad;
}
}
Laravel Moderno
<?php
// Controller con Route::resource
class ProductoController extends Controller
{
public function __construct(
private ProductoService $service
) {}
public function index(): JsonResponse
{
return response()->json(
$this->service->listar()
);
}
public function store(ProductoRequest $request): JsonResponse
{
$producto = $this->service->crear($request->validated());
return response()->json($producto, 201);
}
public function show(Producto $producto): JsonResponse
{
return response()->json($producto->load('categoria'));
}
}
// Eloquent Model
class Producto extends Model
{
protected $fillable = ['nombre', 'precio', 'categoria_id'];
protected $casts = [
'precio' => 'decimal:2',
'activo' => 'boolean',
];
public function categoria(): BelongsTo
{
return $this->belongsTo(Categoria::class);
}
public function scopeActivos(Builder $query): Builder
{
return $query->where('activo', true);
}
}
// Query Builder fluido
$productos = Producto::query()
->activos()
->where('precio', '>=', 500)
->with('categoria')
->orderBy('precio', 'desc')
->paginate(20);
Herramientas Esenciales
| Herramienta | Propósito |
|---|---|
| Composer | Gestor de dependencias |
| Laravel | Framework full-stack |
| Symfony | Framework enterprise |
| PHPUnit | Tests unitarios |
| PHPStan | Análisis estático |
| Pest | Tests elegantes |
Lista de Verificación de Aprendizaje
- Dominar características de PHP 8.x
- Entender Composer y autoloading
- Aprender Laravel o Symfony
- Estudiar patrones de diseño
- Practicar tests con PHPUnit/Pest
- Explorar APIs REST con Laravel
- Implementar autenticación y autorización
Recursos Esenciales
Cita
“El PHP moderno no tiene nada que ver con el PHP del que puedas haber oído hablar. Es un lenguaje maduro, tipado y de alto rendimiento.” - Taylor Otwell
¡PHP sigue evolucionando y se mantiene como una excelente opción para desarrollo web!