Manipuler des mesures
L'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.
Convertir
Ajouter et soustraire
Comparer avec un booléen
Comparer "plus/moins grand
que"
Changer manuellement des
valeurs
Changer manuellement de
type
Convertir
Le 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 soustraire
Les mesures peuvent être ajoutées en utilisant add() et
soustraites en utilisant sub(). Le résultat sera du même type
que l'objet original. Les objets dynamiques supportent un interface 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 automatique
Ajouter 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 mesures
Les 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 mesures
Pour 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 valeurs
Pour 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 type
Pour 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"
]]>