NumberHelper には、ビューにおいて数字を一般的なフォーマットで表示するのに便利なメソッドがあります。これらのメソッドは、通貨、パーセント、データサイズ、特定の精度へのフォーマット、そして数字のフォーマットにおけるさらなる柔軟性を提供します。
これらの関数は全て、フォーマットした数字を返し、自動的に出力しません。
currency(mixed $number, string $currency= 'USD')
このメソッドは、数字を一般的な通貨のフォーマット(EUR,GBP,USD)で表示するために使用します。ビューにおける使用法は次のようになります。
<?php echo $number->currency($number,$currency); ?>
第一引数の「$number」は、表現したい金額の合計を表す浮動小数点でなければいけません。第二引数にはあらかじめ定義された通貨のフォーマットの枠組みを使います
$currency |
1234.56 を通貨のタイプでフォーマットしたもの |
---|---|
EUR |
€ 1.236,33 |
GBP |
£ 1,236.33 |
USD |
$ 1,236,33 |
通貨の記号として、必要であれば、 HTML エンティティが出力されます。
もし認識できない $currency の値が渡されたら、 USD フォーマットの数値の頭に $currency を追加します。次の例を見てください。
<?php echo $number->currency('1234.56', 'FOO'); ?>
// 出力:
FOO 1,234.56
precision (mixed $number, int $precision = 3)
このメソッドは指定した精度(小数点以下の位)で数字を表示します。指定された精度にするため、数字は指定された小数点の位で丸められます。
<?php echo $number->precision(456.91873645, 2 ); ?>
// 出力:
456.92
toPercentage(mixed $number, int $precision = 2)
このメソッドは precision() のように、指定した精度に従い、渡された小数点の位で数値を丸めて、数値をフォーマットします。また、このメソッドは数字をパーセンテージとして表現し、パーセントの記号を出力に追加します。
<?php echo $number->toPercentage(45.691873645); ?>
// 出力:
45.69%
toReadableSize(string $data_size)
このメソッドはバイトを「KB」「MB」「GB」そして「TB」に変換するショートカットを提供し、データサイズを人が読みやすいようフォーマットにします。サイズは与えられたデータの大きさによって小数点第二位まで表示されます。すなわち、大きなサイズは大きな単位で表現されます。
echo $number->toReadableSize(0); // 0 Bytes
echo $number->toReadableSize(1024); // 1 KB
echo $number->toReadableSize(1321205.76); // 1.26 MB
echo $number->toReadableSize(5368709120); // 5 GB
format (mixed $number, mixed $options=false)
このメソッドはビュー内で数値をフォーマットすることができます。(他の NumberHelper メソッドはメインメソッドとして使用します)このメソッドを使用方法は次のようになります:
$number->format($number, $options);
$number パラメータは数値で、出力用にフォーマットしようとしているものです。$number が指定されないと、数値 1236.334 は、1,236 と出力します。デフォルトの精度は、1の位であることに注意してください。
$options パラメータはこのメソッドに対して本当の魔法をおく場所になります。
整数を渡した場合、精度あるいは関数の places の値となります。
連想配列を渡した場合、次のようなキーを使用できます:
places (integer): 精度
before (string): 出力される数値の前に置く文字
escape (boolean): 値がある場合にエスケープする
decimals (string): 小数点を区切るために使用される文字
thousands (string): 千位(千,百万等)毎の区切り文字
echo $number->format('123456.7890', array(
'places' => 2,
'before' => '¥ ',
'escape' => false,
'decimals' => '.',
'thousands' => ','
));
// 出力 '¥ 123,456.79'