Qual a necessidade dessa função?

Na hora de montar uma aplicação Web, muitas vezes nos deparamos com a necessidade de formatar um número inteiro para decimal com duas casas decimais e com separador de milhar , no formato brasileiro (vírgula como separador de decimal e ponto como separador de milhar), especialmente para apresentação de dados em formato de relatório ou tabela. Essa necessidade se deve muitas vezes porque a formatação original dos números decimais no PHP é derivada da formatação americana (ponto como separador de decimal e vírgula como separador de milhar) e isso pode confundir o usuário na hora de exibir os dados na tela.

Neste artigo iremos ver como criar uma função em PHP, que faz essa formatação no padrão brasileiro e tornar sua aplicação mais profissional.

Como instalar o servidor Apache e configurar as pastas da aplicação

Antes de mais nada, para rodarmos e testarmos a aplicação, é necessário termos um servidor na nossa máquina, para rodar a aplicação localmente (no caso do PHP, é necessário um servidor Apache instalado na máquina). Uma boa opção para instalar o servidor Apache, é baixar o XAMPP , que é um pacote que acompanha o servidor Apache, PHP e MySQL - disponível no site http://www.apachefriends.org/pt_br/xampp.html . Como padrão, o XAMPP será instalado no diretório C:\xampp.

Os arquivos salvos devem ficar na pasta C:\xampp\htdocs\[diretório da aplicação]\ ou C:\xampp\htdocs, caso se queria rodar a aplicação direto do diretório raiz.

Para padronizar a aplicação e a função que iremos fazer, vamos criar uma pasta dentro de C:\xampp\htdocs para salvar os arquivos. Esta pasta se chamará inteiro_decimal_br.

Como criar a função

Na criação do código abaixo, ressalto a importância dos seguintes itens:
Na hora de escrever o código em PHP, ele deve ser aberto pela tag .

Devemos levar também em consideração os seguintes itens:

Docblox: é um bloco de comentário onde você especifica de forma resumida o que a função faz, o parâmetro que a função receberá, e o que ela retorna.

Isso facilita muito o entendimento do que a função faz, principalmente em editores de PHP como PHPDesigner ou IDEs de desenvolvimento como o NetBeans, pois eles lêem os dados do docblox e mostram informações sobre o que a função faz, o parâmetro que deve receber e o que a função retorna.

A sintaxe do docblox segue essa ordem:

Listagem 1: Sintaxe do docblox

/**
 * Comentário sobre o que faz a função
 *
 *@param [tipo de variável do parâmetro] [nome do parâmetro] [comentário sobre o parâmetro]
 * 
 *@return [tipo de variável que a função retorna]
 *
 **/

Vamos criar a função com o nome inteiro_decimal_br e esta receberá a variável $numero como parâmetro:function inteiro_decimal_br($numero).

Essa função pode ser escrita num IDE de desenvolvimento como o Netbeans, um editor de páginas como o PHP Designer ou Dreamweaver, ou mesmo no bloco de notas (neste caso, você salva o arquivo como texto e depois renomeia ele com a extensão PHP).
Essa função possuirá duas linhas de código:

Listagem 2: Primeira linha da função

$numero = number_format($numero, 2, ',','.');

Nessa linha, a variável $numero irá receber o resultado da função nativa do PHP (já própria da linguagem PHP) number_format() do parãmetro $numero (esse parâmetro pode ser especificado por formulário via POST ou GET, ou especificado dentro do código da própria aplicação).

A função number_format é constituída dos seguintes parâmetros: number_format([número a ser formatado],[quantidade de casas decimais],[indicador de decimal],[separador de milhar]). Ao escrever a linha de código acima, você estará formatando a variável número com duas casas decimais, vírgula (,) como indicador de decimais e o ponto (.) como separador de milhar. E atribuirá à variável $numero, o valor do parâmetro já com a formatação especificada.

Listagem 3: Segunda linha da função

return $numero;

Essa linha irá retornar o resultado da variável $numero da função acima.

Código final da função

A sua função deverá ficar como está o código abaixo:

Listagem 4: Código final da função

/**
 * Formata número inteiro para decimal com duas casas e com separador de milhar
 *
 * @param integer $numero inteiro a ser formatado
 *
 * @return string
 */

function inteiro_decimal_br($numero)
{
    $numero = number_format($numero, 2, ',', '.'); 
    return $numero;
}

?>

Com a função em mãos, podemos salvar o código. Salvaremos como formata_inteiro_decimal_br_tela.php dentro de C:\xampp\htdocs\inteiro_decimal_br.

Como criar a aplicação e chamar a função

Iremos criar uma aplicação de demonstração simples para mostrar a função em funcionamento.

Antes de escrevermos o código, paremos para analisar o que cada linha do código da aplicação representa:

Listagem 5: Primeira linha da aplicação

require 'formata_inteiro_decimal_br_tela.php';

Carrega o arquivo especificado (que contém a função) dentro da aplicação na hora de inicializá-lo. Para facilitar, vamos colocar somente o nome do arquivo formata_inteiro_decimal_br_tela.php) já que, neste exemplo, o arquivo com o código da função estará dentro da mesma pasta onde está o arquivo do código da aplicação principal.

Listagem 6: Segunda linha da aplicação

$valor = 2000;

Cria a variável $valor e especifica o valor dela para 2000.

Listagem 7: Terceira linha da aplicação

$valor_tela = inteiro_decimal_br($valor);

Utiliza a função inteiro_decimal_br() do arquivo formata_inteiro_decimal_br_tela.php e utiliza a variável $valor como parâmetro. O resultado da função é atribuído para a variável $valor_tela.

Listagem 8: Quarta linha da aplicação

echo 'Numero com formatacao: ' . $valor . '
';

Exibe na tela a frase "Numero sem formatacao: " concatenado com o valor da variável $valor, ou seja o número sem a formatação, originalmente configurado no início da aplicação e imprime também uma quebra de linha de texto.

Listagem 9: Quinta linha da aplicação

echo 'Numero com formatacao: ' . $valor_tela;

Exibe na tela a frase "Numero com formatacao: " concatenado com o valor da variável $valor_tela (no caso, o número com duas casas decimais e separador de milhar no padrão brasileiro - vírgula como separador de decimal e ponto como separador de milhar).

Código final da aplicação

O código final deverá ficar dessa forma:

Listagem 10: Código final da aplicação

';
echo 'Numero com formatacao: ' . $valor_tela;

?>

Escreva o código acima no editor e salve o arquivo como inteiro_decimal_br.php também no mesmo diretório onde está o arquivo com o código da função (C:\xampp\htdocs\inteiro_decimal_br).

Para rodar a página em PHP com a aplicação final, devemos entrar no browser e digitar o seguinte endereço, para efetuar o teste: http://localhost/ [diretório - se estiver em uma pasta .Se rodar direto da raiz, deixar vazio] /[nome do arquivo.php]

Como especificamos uma pasta para a aplicação neste exemplo, vamos digitar e executar o seguinte endereço: http://localhost/inteiro_decimal_br/inteiro_decimal_br.php.

E cá estamos, o número formatado com duas casas decimais e separador de milhar no padrão brasileiro:

  • Numero sem formatação: 2000
  • Numero formatado: 2.000,00

Conclusão

Neste artigo aprendemos a criar uma função que converte um número inteiro para decimal com duas casas decimais e separador de milhar, no formato brasileiro. Isso é útil para criarmos aplicações que exijam dados numéricos formatados em decimal e milhar no formato brasileiro, em especial exibição de relatórios e tabelas, onde a formatação dos dados pode fazer diferença para o usuário.

Agora é estudar e botar a mão na massa. Até a próxima.