Laravel.Education
Acme Inc.

Transforme o Desenvolvimento em Laravel: Adeus Macros, Olá Mixins!

08/08/2025

tags:

No mundo do desenvolvimento com Laravel, a extensão de classes é uma prática comum para adicionar funcionalidades personalizadas. Tradicionalmente, os macros têm sido a ferramenta de escolha para essa tarefa. No entanto, os Mixins surgem como uma alternativa mais organizada e escalável. Este artigo explora como você pode substituir os macros por Mixins para um código mais limpo e manutenível.

Por que Migrar para Mixins?

Os Mixins permitem que você encapsule métodos personalizados em classes dedicadas, promovendo a reutilização de código e facilitando a manutenção. Ao contrário dos macros, que podem desorganizar rapidamente o AppServiceProvider, os Mixins mantêm seu código estruturado e legível.

Exemplo Prático: Criando Mixins

Vamos criar dois Mixins: StringMixin e ArrayMixin, para adicionar métodos personalizados às classes Str e Arr do Laravel, respectivamente.

StringMixin.php

<?php

namespace App\Mixins;

use Closure;

class StringMixin
{
    public function fullName()
    {
        return function (string $firstname, string $lastname) {
            return trim($firstname.' '.$lastname);
        };
    }

    public function initials()
    {
        return function (string $firstname, string $lastname) {
            return strtoupper($firstname[0].$lastname[0]);
        };
    }
}

ArrayMixin.php

<?php

namespace App\Mixins;

use Closure;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;

class ArrayMixin
{
    public function camelToSnake()
    {
        return function (array $array) {
            return Arr::mapWithKeys($array, function ($value, $key) {
                return [Str::snake($key) => $value];
            };
        };
    }

    // Outros métodos aqui...
}

Registrando os Mixins

No AppServiceProvider, registre os Mixins da seguinte maneira:

public function boot(): void
{
    Str::mixin(new StringMixin());
    Arr::mixin(new ArrayMixin());
}

Benefícios dos Mixins

  • Reutilização de Código: Encapsule lógica comum em Mixins para uso em todo o seu aplicativo.
  • Organização: Mantenha seu código limpo e focado, separando a lógica auxiliar em classes dedicadas.
  • Manutenibilidade: Facilite a atualização e remoção de funcionalidades, tudo em um só lugar.

Adotar Mixins no seu fluxo de trabalho com Laravel pode significar um grande salto em termos de qualidade e organização de código. Experimente esta abordagem e veja a diferença por si mesmo!