Acredito que na maioria dos sites é necessário a formatação de números, incluindo valores. Por isso, vou explicar as funções que o helper Number pode nos proporcionar para que nossos sistemas fiquem mais ágeis ainda.
Ele possui 5 métodos, são eles:
precision: você passa um número de parâmetro e ele vai retornar este número com uma certa quantidade de casas decimais. A quantidade de casas que você quer é definido no segundo parâmetro. Este segundo parâmetro é opcional, sendo o padrão 3. Exemplos:
1 2 3 | $number->precision(50.37243682); // Retornará 50.372 $number->precision(50.37243682, 2); // Retornará 50.37 $number->precision(50.3, 3); // Retornará 50.300 |
toReadableSize: você passa uma quantidade de bytes e ele retorna de uma forma legível o tamanho. Por exemplo, 1024 bytes correspondem a 1 KB, portanto ele vai te retornar ‘1 KB’. Exemplos:
1 2 3 4 | $number->toReadableSize(0); // Retornará '0 Bytes' $number->toReadableSize(1); // Retornará '1 Byte' $number->toReadableSize(10240); // Retornará '10 KB' $number->toReadableSize(21411921.92); // Retornará '20.42 MB' |
toPercentage: simplesmente coloca o sinal % no final. É opcional informar a precisão como segundo parâmetro. Exemplos:
1 2 | $number->toPercentage(50.4563); // Retornará 50.456% $number->toPercentage(50.421, 2); // Retornará 50.42% |
format: O primeiro parâmetro corresponde ao número. O segundo, opcional, corresponde as opções que você deseja para formatar o número. Neste parâmetro você passa um array com as opções, onde você pode configurar o seguinte:
- before: texto que vai na frente do número. O padrão é ‘$’;
- places: número de casas decimais. O padrão é 2;
- thousands: símbolo de separação de milhares. O padrão é ‘,’;
- decimals: símbolo de separação de decimais. O padrão é ‘.’.
- after: texto que vai atrás do número. O padrão é vazio;
Exemplos:
1 2 3 4 | $number->format(50); // Retornará '$50.00' $number->format(50.25); // Retornará '$50.25' $number->format(50.25, array('decimal'=>',')); // Retornará '$50,25' $number->format(2050.25, array('after'=>'', 'before'=>'', 'thousands'=>'.', 'decimal'=>',')); // Retornará '2.050,25' |
currency: transforma um número em valor monetário. Como segundo parâmetro, é opcional informar a unidade monetária. Atualmente, o CakePHP suporta apenas 3: USD (Dólar americano), GBP (Libra esterlina) e EUR (Euro). Já fiz o pedido para o pessoal de desenvolvido para incluírem o BRL (Real Brasileiro), mas acredito que só entre na versão 2.0. Mesmo não tendo a moeda brasileira ali, é possível usar o terceiro parâmetro, que então você pode definir as mesmas configurações de format e mais:
- zero: valor neutro da moeda. O padrão é ‘0′;
- negative: como será apresentado valores negativo. Caso seja configurado ‘()’, ele irá colocar o número entre os parênteses, caso contrário irá colocar o valor na frente do número (por exemplo ‘-’ acarreta em ‘-R$100,00′). O padrão é ‘()’;
- escape: ignorar códigos HTML. O padrão é verdadeiro (true).
Além disso, o padrão de ‘before’ aqui é vazio e não ‘$’. Valores entre -1 e 1 serão colocados em centavos, portanto é necessário definir o valor de ‘after’. Exemplos:
1 2 3 4 | $number->currency(10.20); // Retornará '10.20' $number->currency(10.20, 'USD'); // Retornará '$10.20' $number->currency(0.56, 'USD'); // Retornará '56c' $number->currency(345323.234, '', array('after'=>'R$', 'thousands'=>'.', 'decimals'=>',')); // Retornará 'R$345.323,23' |
É isso aí… Qualquer coisa é só perguntar.