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.

Número

class Cake\I18n\Number

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.

Formatação de Valores Monetários

Cake\I18n\Number::currency(mixed $value, string $currency = null, array $options = [])

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 true para substituir o símbolo da moeda pelo código de moeda internacional

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);

Definição da moeda padrão

Cake\I18n\Number::setDefaultCurrency($currency)

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.

Obtendo a moeda padrão

Cake\I18n\Number::getDefaultCurrency()

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.

Formatando números de ponto flutuante

Cake\I18n\Number::precision(float $value, int $precision = 3, array $options = [])

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);

Formatação de Porcentagens

Cake\I18n\Number::toPercentage(mixed $value, int $precision = 2, array $options = [])

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
]);

Interagindo com valores legíveis para humanos

Cake\I18n\Number::toReadableSize(string $size)

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

Formatando Números

Cake\I18n\Number::format(mixed $value, array $options = [])

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 !'
Cake\I18n\Number::ordinal(mixed $value, array $options = [])

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'

Diferenças de formato

Cake\I18n\Number::formatDelta(mixed $value, array $options = [])

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]'

Configurar formatadores

Cake\I18n\Number::config(string $locale, int $type = NumberFormatter::DECIMAL, array $options = [])

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'
]);