Manipuler des mesuresL'analyse et la normalisation de l'entrée, combinées avec la récupération suivant les notations régionalisées
rend des données accessibles aux utilisateurs dans différentes régions. Beaucoup de méthodes additionnelles existent
dans les composants Zend_Measure_* pour manipuler et travailler ces données, après qu'elles aient été
normalisées.ConvertirAjouter et soustraireComparer avec un booléenComparer "plus/moins grand que"Changer manuellement des
valeursChanger manuellement de typeConvertirLe dispositif le plus important est probablement la conversion dans différentes unités de la mesure. La
conversion d'une unité peut être faite à tout moment en utilisant la méthode convertTo(). Des
unités de mesure peuvent seulement être converties en d'autres unités du même type (classe). Par conséquent, il
n'est pas possible de convertir (par exemple : une longueur en poids), qui encouragerait des pratiques de
programmation pauvres et entraînerait la propagation d'erreurs sans lever d'exception.La méthode convertTo accepte un paramètre facultatif. Avec ce paramètre vous pouvez définir
une précision pour l'élément retourné. La précision par défaut est "2".ConvertirconvertTo('KILOGRAM');
// affiche "Kilo : 617283.945 kg"
// l'utilisation de constantes est considérée comme
// une meilleure pratique que les chaînes
print "Tonne : ".$unite->convertTo(Zend_Measure_Weight::TON);
// affiche "Tonne : 617.283945 t"
// définition de la précision pour l'affichage
print "Tonne :".$unit->convertTo(Zend_Measure_Weight::TON, 3);
]]>Ajouter et soustraireLes mesures peuvent être ajoutées en utilisant add() et soustraites en utilisant
sub(). Chaque addition créera un nouvel objet pour le résultat. L'objet courant ne sera jamais
changé par la classe. Le nouvel objet sera du même type que l'objet de début. Les objets dynamiques supportent
un modèle fluide de programmation, où des ordres complexes d'opération peuvent être imbriqués sans risque
d'effets secondaires changeant les objets d'entrée.Ajouter des mesuresadd($unite2);
echo $somme; // affiche "300 cm"
]]>Conversion automatiqueAjouter un objet à l'autre le convertira automatiquement dans l'unité correcte. Il n'est pas
nécessaire d'appeler convertTo() avant
d'ajouter des unités différentes.Soustraire des mesuresLa soustraction des mesures fonctionne comme l'addition.sub($unite2);
echo $somme; // affiche "100 cm"
]]>Vérifier l'égalité des mesuresLes mesures peuvent également être comparées, mais sans conversion automatique de l'unité. De plus,
equals() retourne TRUE, seulement si la valeur et l'unité de mesure sont
identiques.Mesures différentesequals($unite2)) {
print "Les mesures sont identiques";
} else {
print "Les mesures sont différentes";
}
// affiche "Les mesures sont différentes"
]]>Mesures identiquessetType(Zend_Measure_Length::CENTIMETER);
if ($unite1->equals($unite2)) {
print "Les mesures sont identiques";
} else {
print "Les mesures sont différentes";
} // affiche "Les mesures sont identiques"
]]>Comparer les mesuresPour déterminer si une mesure est plus ou moins grande qu'une autre, il faut utiliser
compare(), qui renvoie 0, -1 ou 1 selon la différence entre les deux objets. Les mesures identiques
retourneront 0. Plus petit retournera -1 et plus grand retournera +1.Différencecompare($unite1);
// affiche "Egalité : 0"
print "Plus petit que : ".$unite2->compare($unite3);
// affiche "Plus petit que : -1"
print "Plus grand que : ".$unite3->compare($unite2);
// affiche "Plus grand que : 1"
]]>Changer manuellement des valeursPour changer explicitement la valeur d'une mesure, il faut utiliser setValue() pour
surcharger la valeur courante. Les paramètres sont identiques à ceux du constructeur.Changer une valeursetValue(1.2);
echo $unite; // affiche "1.2 m"
$unite->setValue(1.2, Zend_Measure_Length::KILOMETER);
echo $unite; // affiche "1200 km"
$unite->setValue("1.234,56", Zend_Measure_Length::MILLIMETER,$locale);
echo $unite; // affiche "1234.56 mm"
]]>Changer manuellement de typePour changer le type d'une mesure sans altérer sa valeur, il faut utiliser setType().Changer de typesetType(Zend_Measure_Length::KILOMETER);
echo $unite; // affiche "1000 km"
]]>