3 visitas

Cómo integrar servicios Laravel en proyectos CodeIgniter 3 usando PSR-4

Aprovechá librerías y componentes de Laravel dentro de CI3 usando namespaces PSR-4.

Una ventaja de habilitar PSR-4 en CI3 es que podemos reutilizar componentes de Laravel (colecciones, helpers, validadores) sin migrar el proyecto. Es útil en etapas de transición o en equipos mixtos.

1. Instalar componentes Laravel

Ejemplo típico: usar illuminate/validation.


composer require illuminate/validation illuminate/filesystem

2. Crear un validador PSR-4

En application/services/Validation:

<?php

namespace Validation;

use Illuminate\Validation\Factory;
use Illuminate\Translation\Translator;
use Illuminate\Translation\ArrayLoader;

final class UserValidator
{
    private Factory $validator;

    public function __construct()
    {
        $loader = new ArrayLoader();
        $translator = new Translator($loader, 'es');

        $this->validator = new Factory($translator);
    }

    public function validate(array $input): array
    {
        $rules = [
            'nombre' => 'required|min:3',
            'email' => 'required|email'
        ];

        $validator = $this->validator->make($input, $rules);

        if ($validator->fails()) {
            return $validator->errors()->toArray();
        }

        return [];
    }
}

3. Usar el validador en CI3

<?php

use Validation\UserValidator;

class Usuarios extends CI_Controller
{
    public function crear()
    {
        $validator = new UserValidator();

        $errores = $validator->validate($this->input->post());

        if ($errores) {
            echo json_encode(['errores' => $errores]);
            return;
        }

        $this->db->insert('usuarios', $this->input->post());

        echo json_encode(['ok' => true]);
    }
}

Esto acerca herramientas modernas a un proyecto legacy sin necesidad de migrar todo el código.

Me dedico a crear soluciones web eficientes y a compartir mi conocimiento con la comunidad de desarrolladores.

Alejandro Leone
Backend Developer