Number

class Cake\I18n\Number

あなたが View の外で NumberHelper 機能が必要な場合、 Number クラスを次のように使います:

namespace App\Controller;

use Cake\I18n\Number;

class UsersController extends AppController
{

    public function initialize()
    {
        parent::initialize();
        $this->loadComponent('Auth');
    }

    public function afterLogin()
    {
        $storageUsed = $this->Auth->user('storage_used');
        if ($storageUsed > 5000000) {
            //  割り当てられたusersに通知
            $this->Flash->success(__('あなたは {0} ストレージを使用しています', Number::toReadableSize($storageUsed)));
        }
    }
}

以下の全ての機能は、整形された数値を返します。これらは自動的にビューに出力を表示しません。

通貨フォーマット

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

このメソッドは、共通通貨フォーマット(ユーロ、英ポンド、米ドル)で数値を表示するために使用されます。 ビュー内で次のように使います。:

// NumberHelperとしてコール
echo $this->Number->currency($value, $currency);

// Numberとしてコール
echo Number::currency($value, $currency);

1つ目のパラメータ $value は、合計金額をあらわす浮動小数点数でなければいけません。 2つ目のパラメータは、あらかじめ定義された通貨フォーマット方式を選択するための文字列です。:

$currency 通貨の種類によってフォーマットされた 1234.56
EUR €1.234,56
GBP £1,234.56
USD $1,234.56

3つ目のパラメータは、出力を定義するためのオプションの配列です。 次のオプションが用意されています。:

オプション 説明
before レンダリングされた数値の前に表示されるテキスト。
after レンダリングされた数値の後に表示されるテキスト。
zero ゼロ値の場合に使用するテキストで、 文字列か数値で指定できます。例. 0, ‘無料!’
places 小数点以下の桁数を指定します。例. 2
precision 小数点以下の最大桁数を指定します。例. 2
locale 数値フォーマットに使用するロケール名。 例. “fr_FR”.
fractionSymbol 小数に使用する文字列。例. ‘ cents’
fractionPosition fractionSymbolで指定した文字列を、小数の ‘before’ または ‘after’ のどちらに配置するか。
pattern 数値のフォーマットに使用するICU数値パターン。 例. #,###.00
useIntlCode 通貨記号を国際通貨コードに置き換えるために true を指定する。

$currency の値が null の場合、デフォルト通貨は Cake\I18n\Number::defaultCurrency() によって設定されます。

デフォルト通貨の設定

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

デフォルト通貨のためのsetter/getterです。これによって、常に Cake\I18n\Number::currency() に通貨を渡したり、 他のデフォルトを設定することによって全ての通貨の出力を変更したりする必要がなくなります。 $currencyfalse が設定された場合、現在格納されている値をクリアします。 デフォルトでは、設定されていれば intl.default_locale を取得し、そうでない場合は ‘en_US’ を設定します。

浮動小数点数フォーマット

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

このメソッドは指定された精度(小数点以下)で数値を表示します。 定義された精度のレベルを維持するために丸めます。

// NumberHelperとしてコール
echo $this->Number->precision(456.91873645, 2);

// 出力
456.92

// Numberとしてコール
echo Number::precision(456.91873645, 2);

パーセンテージフォーマット

Cake\I18n\Number::toPercentage(mixed $value, int $precision = 2, array $options = [])
オプション 説明
multiply 値を100で乗算しなければならないかどうかを示す Boolean値です。少数のパーセンテージに便利です。

このメソッドは Cake\I18n\Number::precision() のように、 与えられた精度に応じて(精度を満たすように丸めて)数値をフォーマットします。 このメソッドはパーセンテージとして数値を表現し、パーセント記号を追加して出力します。

// NumberHelperとしてコール。 出力: 45.69%
echo $this->Number->toPercentage(45.691873645);

// Numberとしてコール。 出力: 45.69%
echo Number::toPercentage(45.691873645);

// multiplyオプションとともにコール。 出力: 45.7%
echo Number::toPercentage(0.45691, 1, [
    'multiply' => true
]);

人が読める形式の値との相互作用

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

このメソッドはデータサイズを人が読める形式に整形します。 これは、バイト数をKB、MB、GB、およびTBへ変換するための近道を提供します。 サイズは、データのサイズに応じて小数点以下二桁の精度で表示されます。(例 大きいサイズの表現):

// 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

// 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

数字の整形

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

このメソッドは、ビューで使うための数値の整形をより制御しやすくします。 (および、メインのメソッドとして、NumberHelperのその他のほとんどのメソッドから使用されます。) このメソッドは以下のように使用します:

// NumberHelperとしてコール
$this->Number->format($value, $options);

// Numberとしてコール
Number::format($value, $options);

$value パラメータは、出力のために整形しようとしている数値です。 $options が未指定の場合、1236.334という数値は1,236として出力されるでしょう。 デフォルトの制度は1の位であることに注意してください。

$options パラメーターはこのメソッドに存在している手品のタネの在りかです。

  • もし整数を渡した場合、精度もしくは小数点以下の桁数になります。
  • もし連想配列を渡した場合、以下のキーが使用できます。:
オプション 説明
places 小数点以下の桁数を指定します。例. 2
precision 小数点以下の最大桁数を指定します。例. 2
pattern 数値のフォーマットに使用するICU数値パターン。 例. #,###.00
locale 数値フォーマットに使用するロケール名。 例. “fr_FR”.
before レンダリングされた数値の前に表示されるテキスト。
after レンダリングされた数値の後に表示されるテキスト。

例:

// NumberHelperとしてコール
echo $this->Number->format('123456.7890', [
    'places' => 2,
    'before' => '¥ ',
    'after' => ' !'
]);
// 出力 '¥ 123,456.79 !'

echo $this->Number->format('123456.7890', [
    'locale' => 'fr_FR'
]);
// 出力 '123 456,79 !'

// Numberとしてコール
echo Number::format('123456.7890', [
    'places' => 2,
    'before' => '¥ ',
    'after' => ' !'
]);
// 出力 '¥ 123,456.79 !'

echo Number::format('123456.7890', [
    'locale' => 'fr_FR'
]);
// 出力 '123 456,79 !'
Cake\I18n\Number::ordinal(mixed $value, array $options = [])

このメソッドは序数を出力します。

例:

echo Number::ordinal(1);
// 出力 '1st'

echo Number::ordinal(2);
// 出力 '2nd'

echo Number::ordinal(2, [
    'locale' => 'fr_FR'
]);
// 出力 '2e'

echo Number::ordinal(410);
// 出力 '410th'

差分フォーマット

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

このメソッドは、符号付きの数として値の差分を表示します。:

// NumberHelperとしてコール
$this->Number->formatDelta($value, $options);

// Numberとしてコール
Number::formatDelta($value, $options);

$value パラメーターは、出力のために整形しようとしている数値です。 $options が未指定の場合、1236.334という数値は1,236として出力されるでしょう。 デフォルトの制度は1の位であることに注意してください。

$options パラメーターは Number::format() と同じキーを取ります。:

オプション 説明
places 小数点以下の桁数を指定します。例. 2
precision 小数点以下の最大桁数を指定します。例. 2
locale 数値フォーマットに使用するロケール名。 例. “fr_FR”.
before レンダリングされた数値の前に表示されるテキスト。
after レンダリングされた数値の後に表示されるテキスト。

例:

// NumberHelperとしてコール
echo $this->Number->formatDelta('123456.7890', [
    'places' => 2,
    'before' => '[',
    'after' => ']'
]);
// 出力 '[+123,456.79]'

// Numberとしてコール
echo Number::formatDelta('123456.7890', [
    'places' => 2,
    'before' => '[',
    'after' => ']'
]);
// 出力 '[+123,456.79]'

フォーマッタ設定

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

このメソッドを使用すると、様々なメソッドの呼び出し間で持続的なフォーマッタのデフォルトを設定することができます。

例:

Number::config('en_IN', \NumberFormatter::CURRENCY, [
    'pattern' => '#,##,##0'
]);