Laravel Brasil

Criando seus próprios helpers

Ola pessoal

a maioria dos programadores sabem o que é um helper, mas talvez iniciantes não sabem, e nem que é possível criar um.

a lista de helpers que o laravel disponibiliza você pode verificar aqui: helpers

as vezes é necessário criar um helper customizado pois não existe helpers criados para resolver 100% dos problemas.

pensei em demonstrar um exemplo simples e útil ao mesmo tempo, existe uma função do php chamada ucwords

ucwords() deixa o primeiro carácter de cada palavra em letra maiúscula, vejamos o exemplo do manual do php:


<?php
$foo = 'hello world!';
$foo = ucwords($foo);             // Hello World!

$bar = 'HELLO WORLD!';
$bar = ucwords($bar);             // HELLO WORLD!
$bar = ucwords(strtolower($bar)); // Hello World!
?>

só que se voce tentar usar essa função para nomes completos pode não sair o resultado esperado, confira esse exemplo:


<?php
$nome = 'fabyo guimarães de oliveira';
echo ucwords($nome);//Fabyo Guimarães De Oliveira

não ficou muito legal não é mesmo, pois “De” no caso de nome próprio ficaria melhor em minusculo

então vamos criar um helper para resolver esse problema

para criar um helper é muito simples, crie uma pasta dentro de app com o nome de Helpers

criei um arquivo chamado MyHelper.php, você pode dar o nome que quiser.


<?php

if (! function_exists('special_ucwords')) {
function special_ucwords($string)
{
$words = explode(' ', strtolower(trim(preg_replace("/s+/", ' ', $string))));
$return[] = ucfirst($words[0]);

unset($words[0]);

foreach ($words as $word)
{
if (!preg_match("/^([dn]?[aeiou][s]?|em)$/i", $word))
{
$word = ucfirst($word);
}
$return[] = $word;
}

return implode(' ', $return);
}
}

para o laravel reconhecer seu helper você precisa adiciona-lo no composer.json:


"psr-4": {
"App\": "app/"
},
"files": [
"app/Helpers/MyHelper.php"
]

rode via console o comando:


composer dump

testando:


<?php

Route::get('/', function () {
return special_ucwords('fabyo guimarães de oliveira');

//Fabyo Guimarães de Oliveira
});

perceberam a diferença?

facil não?, agora só voce seguir esse padrão e criar seus próprios helpers

para facilitar ainda mais o entendimento deem uma olhada no arquivo de helpers do laravel:

vendorlaravelframeworksrcIlluminateFoundationhelpers.php

ate a próxima pessoal :)

Powered by WPeMatico