Pitch: Keygen - Um Gerador de Chaves Melhorado e em PHP
Origem
Eu já estudo desenvolvimento no geral e programação em PHP a alguns anos, mas sempre de maneira bem "eu mesmo", e só atuava dentro da empresa em que trabalhava.
A algum tempo atrás, decidi me aventurar e começar um projeto o qual seria a minha primeira contribuição diretamente com a comunidade, e por mais simples que ela fosse, eu precisava dar o primeiro passo com isso.
A ideia era ter o meu primeiro projeto útil, open source, e que fosse colaborativo. Com ele, descobri que desenvolver algo em código aberto com mais pessoas, era totalmente diferente de desenvolver sozinho, pois precisamos seguir um padrão no código, no qual o PSR-12 foi utilizado nesse caso, mas, essa experiência de Coding Style fica para outro dia!
Assim nasceu o Keygen, o meu primeiro pacote PHP, pensado e elaborado após uma necessidade que eu tive dentro de um outro projeto.
O que é?
O Keygen, é um gerador de chaves aleatórias que permite que o projeto gere desde chaves totalmente aleatórias, até chaves com padrões de geração definidos, como o exemplo abaixo:
$chave = new Key;
$chave->setPattern("XXXX-NNNN-LLLL");
$chave->setNumbers("789");
$chave->setLetters("ABC");
$chave->generate();
Como funciona
No exemplo mostrado acima, nós instanciamos o objeto da chave na variável $chave, e em seguida definimos seu padrão para o seguinte:
4 caracteres alfanuméricos - 4 caracteres numéricos - 4 caracteres apenas de letras.
Logo abaixo, definimos os números que poderão compor a geração da chave, e em seguida as letras.
Por último, chamamos a função de geração final, baseada no que definimos anteriormente.
Funções adicionais
Como este projeto foi inicialmente pensado para que eu pudesse gerar URLs compartilháveis, seria muito útil se ele possibilitasse a geração de chaves sem repetição, correto?
Assim criamos a função generateUnique(), para gerar chaves únicas, conforme exemplo abaixo:
$chave->setExistingKeys([]);
$chave->generateUnique();
No exemplo, passamos obrigatoriamente um array com todas as chaves já geradas no sistema (imaginando que elas tenham sido armazenadas em algum lugar), e então chamamos a função generateUnique(), que irá, antes de entregar o resultado final, validar se a possibilidade escolhida está presente no array ou não.
Links
github/kaiopiola/keygen-package
packagist/kaiopiola/keygen
Considerações finais
O projeto é só apenas o primeiro de muitos, e quis trazer ele aqui pois este também é meu primeiro post aqui no Tabnews!
Eu sempre estou trabalhando em algum projeto ou ideia, ou mesmo colaborando com algum projeto existente lá pelo GitHub, então muito provavelmente ainda me verão mais vezes por aí.
E quanto à este projeto, ele é livre para uso e distribuição, e também aceito PRs com melhorias e correções e também analiso correções nas issues abertas dele, e caso tenha alguma ideia, o fórum de discussões dele está aberto!
Enfim, é isso e bom dia a todos :)!