第21章 Zend_Measure

目次

21.1. 導入
21.2. 計測値の作成
21.2.1. 整数および浮動小数点数からの計測値の作成
21.2.2. 文字列からの計測値の作成
21.2.3. ローカライズされた文字列をもとにした計測値
21.3. 計測値の出力
21.3.1. 自動的な出力
21.3.2. 値の出力
21.3.3. 単位つきの出力
21.3.4. ローカライズされた文字列での出力
21.4. 計測値の操作
21.4.1. 変換
21.4.2. 加減算
21.4.3. 比較
21.4.4. 比較
21.4.5. 値の変更
21.4.6. 型の変更
21.5. 計測値の型
21.5.1. Zend_Measure_Binary のヒント
21.5.2. Zend_Measure_Number のヒント
21.5.3. ローマ数字

21.1. 導入

Zend_Measure_* クラスは、 さまざまな計測を行うためのパッケージです。 汎用的で非常に簡単な方法を提供しています。 Zend_Measure_* クラスを使用すると、 計測値の単位変換ができるようになります。 異なる単位どうしでの足し算や引き算、そして比較も可能です。 ユーザが自国語で入力した内容から、単位を自動的に抽出します。 多くの計測単位をサポートしています。

例 21.1. 計測値の変換

以下の簡単な例で、計測値の型の自動変換の様子を説明します。 計測値を変換するには、その値と型を知っている必要があります。 値としては、整数や浮動小数点数だけでなく数値文字列も使用できます。 変換は、同じ型 (重さ、面積、温度、速度など) の単位間でのみ行うことができます。 型が違う場合は変換できません。

<?php
require_once 'Zend/Measure/Length.php';

$locale = new Zend_Locale('en');
$unit = new Zend_Measure_Length(100, Zend_Measure_Length::METER, $locale);

// メートルをヤードに変換します
echo $unit->convertTo(Zend_Measure_Length::YARD);
?>

Zend_Measure_* は、さまざまな計測単位をサポートしています。 これらの単位は、すべて統一された記法で表され、 Zend_Measure_<TYPE>::NAME_OF_UNIT のようになります。ここで <TYPE> はその単位の物理的あるいは数値的な特性を表します。 すべての計測単位は、変換用の係数と表示単位を含んでいます。 詳細は 計測値の型 を参照ください。

例 21.2. メートル の計測

メートル は長さの単位です。したがって、対応する定数は Length クラス内にあります。この単位を使用するには、 Length::METER という記法を使用する必要があります。 表示単位は m です。

<?php
require_once 'Zend/Measure/Length.php';

echo Zend_Measure_Length::STANDARD;  // 出力は 'Length::METER' となります
echo Zend_Measure_Length::KILOMETER; // 出力は 'Length::KILOMETER' となります

$unit = new Zend_Measure_Length(100,'METER');
echo $unit;
// 出力は '100 m' となります
?>