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 <?php e fechado 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 . '<br />';
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
< ?php require 'formata_inteiro_decimal_br_tela.php'; $valor = 2000; $valor_tela = inteiro_decimal_br($valor); echo 'Numero sem formatacao: ' . $valor . '<br />'; 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.