Criando helpers no Laravel

15/01/2021 às 13:20 Bruno Couty

No Laravel, "helpers" são, basicamente, funções comuns que ajudam a obter resultados de maneira rápida, apenas chamando funções e passando um ou mais parâmetros.

Fazemos uso deste tipo de ferramenta para criar funções úteis e que podem ser repetitivas dentro de algum tipo de rotina ou situação específica. Um exemplo comum de helpers é o dd($var).

No exemplo abaixo, criaremos helpers dentro do diretório App, então, sugiro a criação de uma pasta "Helpers", dentro de App.

Em "Helpers", crie um arquivo, por exemplo: math.php

Aqui, servirá para abrigar funções matemáticas.

O conteúdo do arquivo deve ser algo como:

<?php

if (!function_exists("validate_tfa")) {
    function validate_tfa(string $token)
    {
        $token = trim(str_replace(' ', '', $token));
        $user = \Illuminate\Support\Facades\Auth::user();
        if (Google2FA::verifyKey($user->tfa_code, $token)) {
            return true;
        }
        return false;
    }
}

if (!function_exists("verify_tfa_status")) {
    function verify_tfa_status()
    {
        $user = \Illuminate\Support\Facades\Auth::user();
        if (!$user->tfa_active) {
            return false;
        }
        return true;
    }
}

E assim, podem ser criadas tantas funções quanto desejadas.

Após criado o arquivo, por convenção, podemos criar, ainda dentro da pasta "Helpers", um arquivo chamado "helpers.php". Dentro deste arquivo, adicionamos um include para todos os arquivos com funções que houverem dentro da pasta "Helpers" (como math.php, strings.php, tests.php...).

<?php
include __DIR__ . "/twoFactorAuth.php";

Por fim, registramos o arquivo "mestre", "helpers.php" dentro do nosso composer, dentro de autoload:

"autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "files": [
        "app/Helpers/helpers.php"
    ]
},

Execute um "composer dump-autoload". Pronto, agora, basta chamar, em qualquer lugar da sua aplicação, pelas funções criadas (ex: verify_tfa_status()).