Para quem acha que criar um código único sem repetições para usar em aplicações com PHP é uma coisa complicada este pequeno script mostra que, na verdade, é bem simples.

Você precisará de códigos únicos para trabalhar com aplicações que gerem pedidos num sistema de vendas ou ordens de serviço, por exemplo.

O maior desafio nesses casos será grantir que o código não se repita porque isso causaria conflitos em sua aplicação.

Imagine se dois ou mais pedidos de compra aparecerem de repente com o mesmo código? Sua aplicação se perderia no processamento e os dados ficariam imprecisos.

Geralmente, para evitar estas horríveis repetições, se usa uma consulta ao banco de dados da aplicação no momento de gerar o código. Ou seja, o sistema gera um código e procura na base de dados se ele já existe. Em caso negativo, o código é considerado válido, do contrário será gerado um novo código e é feita uma nova consulta para verificar.

Mas isso vai deixando sua aplicação muito complexa, claro que existem casos em que isso é necessário. Porém, se sua aplicação não tem lá uma necessidade elevada de requisitos particulares, poderá usar esta solução que eu apresentarei a seguir.

Primeiramente gostaria de deixar claro que o código a seguir não é de minha autoria. Mas faço bastante uso dele há muito tempo depois que o encontrei em um site americano que nem lembro mais.

Se alguém souber o autor, favor avisar.

<?php
function make_seed()
{
list($usec, $sec) = explode(‘ ‘, microtime());
return (float) $sec + ((float) $usec * 10000); //este número define o tamanho do código em caracteres
}
mt_srand(make_seed());
$randval = mt_rand(111,999);
$randval2 = mt_rand(999,111);
$hr = date(‘s’);
$cod = "$randval"."$randval2"."$hr";

A vantagem deste código que elimina a necessidade de consultas à base de dados para validá-lo é que ele usa dados da data atual como dia, mês, ano, hora. Como, em tese, a data não se repete, supomos que o código também não se repita.

Se você sabe uma maneira melhor de escrever este código ou encontrar algum erro, não deixe de se manifestar.

Este foi mais um artigo publicado originalmente em 02 de janeiro de 2010 no meu antigo blog BrasilPHP.net.

Hellston Linhares