This document is for CakePHP's development version, which can be significantly different
from previous releases.
You may want to read
current stable release documentation instead.
Se você precisa das funcionalidades do NumberHelper
fora da View
,
use a classe Number
namespace App\Controller;
use Cake\I18n\Number;
class UsersController extends AppController
{
public function initialize(): void
{
parent::initialize();
$this->loadComponent('Auth');
}
public function afterLogin()
{
$storageUsed = $this->Auth->user('storage_used');
if ($storageUsed > 5000000) {
// Notify users of quota
$this->Flash->success(__('You are using {0} storage', Number::toReadableSize($storageUsed)));
}
}
}
Todas essas funções retornam o número formatado; eles não são impressas automaticamente na visualização de saída.
Este método é usado para exibir um número em formatos monetários comuns (EUR, GBP, USD), com base no código de moeda ISO 4217 de 3 letras. O uso em uma view se parece com:
// Called as NumberHelper
echo $this->Number->currency($value, $currency);
// Called as Number
echo Number::currency($value, $currency);
O primeiro parâmetro, $value
, deve ser um número de ponto flutuante
que representa a quantidade de dinheiro que você está expressando.
O segundo parâmetro é uma string usada para escolher um esquema de
formatação de monetária predefinida:
$ moeda | 1234.56, formatação pelo tipo monetário |
|
---|---|
EUR |
€1.234,56 |
GBP |
£1,234.56 |
USD |
$1,234.56 |
O terceiro parâmetro é um conjunto de opções para definir melhor a saída. As seguintes opções estão disponíveis:
Opção |
Descrição |
---|---|
before |
Texto a ser exibido antes do número renderizado. |
after |
Texto a ser exibido após o número renderizado. |
zero |
O texto a ser usado para valores zero; pode ser uma string ou um número. ou seja, 0, “Grátis!”. |
places |
Número de casas decimais a serem usadas, ou seja, 2 |
precision |
Número máximo de casas decimais a serem usadas, ou seja, 2 |
locale |
O nome do local a ser usado para formatar o número, ou seja. “Fr_FR”. |
fractionSymbol |
String a ser usada para números fracionários, ou seja, “centavos”. |
fractionPosition |
Ou “antes” ou “depois” para colocar o símbolo de fração. |
pattern |
Um padrão de número ICU a ser usado para formatar o número, ou seja. #, ###. 00 |
useIntlCode |
Defina como |
Se de $currency
for null
, a moeda padrão será retornada em
Cake\I18n\Number::defaultCurrency()
. Para formatar moedas em um
formato de contabilidade, você deve definir o formato da moeda:
Number::setDefaultCurrencyFormat(Number::FORMAT_CURRENCY_ACCOUNTING);
Atribui a moeda padrão. Isso elimina a necessidade de sempre passar a moeda
para Cake\I18n\Number::currency()
e alterar todas as saídas de
moeda definindo outro padrão. Se $currency
atribuído o valor null
,
ele apagará o valor armazenado no momento.
Obtem a moeda padrão. Se a moeda padrão foi definida anteriormente usando
setDefaultCurrency()
, então esse valor será retornado. Por padrão, ele irá
retornar o valor intl.default_locale
do ini se estiver atribuído e 'en_US'
se não estiver.
Este método exibe um número com a quantidade especificada de precisão (casas decimais). Ele será arredondado para manter o nível de precisão definido.
// Called as NumberHelper
echo $this->Number->precision(456.91873645, 2);
// Outputs
456.92
// Called as Number
echo Number::precision(456.91873645, 2);
Opção | Descrição |
|
---|---|
multiply |
Booleano para indicar se o valor deve ser multiplicado por 100. Útil para porcentagens decimais. |
Da mesma forma Cake\I18n\Number::precision()
, ste método formata um
número de acordo com a precisão fornecida (onde os números são arredondados para
atender à precisão fornecida). Este método também expressa o número como uma
porcentagem e anexa a saída com um sinal de porcentagem.
// Called as NumberHelper. Output: 45.69%
echo $this->Number->toPercentage(45.691873645);
// Called as Number. Output: 45.69%
echo Number::toPercentage(45.691873645);
// Called with multiply. Output: 45.7%
echo Number::toPercentage(0.45691, 1, [
'multiply' => true
]);
Este método formata o tamanho dos dados em formatos legíveis por humanos. Ele fornece uma forma de atalho para converter bytes em KB, MB, GB e TB. O tamanho é exibido com um nível de precisão de dois dígitos, de acordo com o tamanho dos dados fornecidos (ou seja, tamanhos maiores são expressos em termos maiores)
// Called as NumberHelper
echo $this->Number->toReadableSize(0); // 0 Byte
echo $this->Number->toReadableSize(1024); // 1 KB
echo $this->Number->toReadableSize(1321205.76); // 1.26 MB
echo $this->Number->toReadableSize(5368709120); // 5 GB
// Called as Number
echo Number::toReadableSize(0); // 0 Byte
echo Number::toReadableSize(1024); // 1 KB
echo Number::toReadableSize(1321205.76); // 1.26 MB
echo Number::toReadableSize(5368709120); // 5 GB
Este método fornece muito mais controle sobre a formatação de números para uso em suas visualizações (e é usado como o método principal pela maioria dos outros métodos NumberHelper). Usar este método pode ser parecido com:
// Called as NumberHelper
$this->Number->format($value, $options);
// Called as Number
Number::format($value, $options);
O parâmetro $value
é o número que você está planejando formatar para
saída. Sem o formatting for output. Sem o $options
, o número
1236.334 produzirá a saída 1,236. Observe que a precisão padrão
é zero casas decimais.
O parâmetro $options
é onde reside a verdadeira magia desse método.
Se você passar um número inteiro, isso se tornará a quantidade de precisão ou casas para a função.
Se você passar uma matriz associada, você pode usar as seguintes chaves:
Opção | Descrição |
|
---|---|
places |
Número de casas decimais a serem usadas, ou seja, 2 |
precision |
Número máximo de casas decimais a serem usadas, ou seja, 2 |
pattern |
Um padrão de número ICU a ser usado para formatar o número, ou seja. #, ###. 00 |
locale |
O nome do local a ser usado para formatar o número, ou seja. “Fr_FR”. |
before |
Texto a ser exibido antes do número renderizado. |
after |
Texto a ser exibido após o número renderizado. |
Exemplo:
// Called as NumberHelper
echo $this->Number->format('123456.7890', [
'places' => 2,
'before' => '¥ ',
'after' => ' !'
]);
// Output '¥ 123,456.79 !'
echo $this->Number->format('123456.7890', [
'locale' => 'fr_FR'
]);
// Output '123 456,79 !'
// Called as Number
echo Number::format('123456.7890', [
'places' => 2,
'before' => '¥ ',
'after' => ' !'
]);
// Output '¥ 123,456.79 !'
echo Number::format('123456.7890', [
'locale' => 'fr_FR'
]);
// Output '123 456,79 !'
Este método irá gerar um número ordinal.
Exemplos:
echo Number::ordinal(1);
// Output '1st'
echo Number::ordinal(2);
// Output '2nd'
echo Number::ordinal(2, [
'locale' => 'fr_FR'
]);
// Output '2e'
echo Number::ordinal(410);
// Output '410th'
Este método exibe diferenças de valor como um número assinado:
// Called as NumberHelper
$this->Number->formatDelta($value, $options);
// Called as Number
Number::formatDelta($value, $options);
O parâmetro $value
é o número que você está planejando formatar
para saída. Sem o $options
, 1236.334 produziria como saída 1,236.
Observe que a precisão padrão é zero casas decimais.
O parâmetro $options
usa as mesmas chaves que Number::format()
:
Opção | Descrição |
|
---|---|
places |
Número de casas decimais a serem usadas, ou seja, 2 |
precision |
Número máximo de casas decimais a serem usadas, ou seja, 2 |
locale |
O nome do local a ser usado para formatar o número, ou seja. “Fr_FR”. |
before |
Texto a ser exibido antes do número renderizado. |
after |
Texto a ser exibido após o número renderizado. |
Exemplo:
// Called as NumberHelper
echo $this->Number->formatDelta('123456.7890', [
'places' => 2,
'before' => '[',
'after' => ']'
]);
// Output '[+123,456.79]'
// Called as Number
echo Number::formatDelta('123456.7890', [
'places' => 2,
'before' => '[',
'after' => ']'
]);
// Output '[+123,456.79]'
Este método permite configurar padrões do formatador que persistem nas chamadas para vários métodos.
Exemplo:
Number::config('en_IN', \NumberFormatter::CURRENCY, [
'pattern' => '#,##,##0'
]);