Introduction to Zend Framework

 Learning Zend Framework

appendix

 Zend Framework Reference


  •  Zend_Gdata
  •  Zend_Http
  •  Zend_InfoCard
  •  Zend_Json
  •  Zend_Layout
  •  Zend_Ldap
  •  Zend_Loader
  •  Zend_Locale
  •  Zend_Log
  •  Zend_Mail
  •  Zend_Markup
  •  Zend_Measure
  •  Zend_Memory
  •  Zend_Mime
  •  Zend_Navigation
  •  Zend_Oauth
  •  Zend_OpenId
  •  Zend_Paginator
  •  Zend_Pdf
  •  Zend_ProgressBar
  •  Zend_Queue
  •  Zend_Reflection
  •  Zend_Registry
  •  Zend_Rest

  •  Zend_Search_Lucene
  •  Zend_Serializer
  •  Zend_Server
  •  Zend_Service
  •  Zend_Session
  •  Zend_Soap
  •  Zend_Tag
  •  Zend_Test
  •  Zend_Text
  •  Zend_TimeSync
  •  Zend_Tool
  •  Zend_Tool_Framework
  •  Zend_Tool_Project
  •  Zend_Translate
  •  Zend_Uri
  •  Zend_Validate
  •  Zend_Version
  •  Zend_View
  •  Zend_Wildfire
  •  Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Translation 96.1% Update 2010-11-28 - Revision 23448 - Version ZF 1.11.x

    47.4. Manipulation von Maßeinheiten

    Analysieren und normalisieren von Eingaben kombiniert mit der Ausgabe in lokalisierter Schreibweise macht die Daten für Benutzer in fremden Gebietsschemata benutzbar. Viele zusätzliche Methoden existieren in den Zend_Measure_* Komponentenum diese Daten zu manipulieren und mit Ihnen zu arbeiten nachdem Sie normalisiert wurden.

    47.4.1. Konvertieren

    Das warscheinlich wichtigste Feature ist die Konvertierung in verschiedene Maßeinheiten. Die Konvertierung von Maßeinheiten kann durch verwendung der Methode convertTo() beliebig oft durchgeführt werden. Maßeinheiten können nur in andere Einheiten des gleichen Typs (Klasse) konvertiert werden. Deswegen ist es nicht möglich z.B. eine Länge in ein Gewicht zu konvertieren, was ja schlechte Programmierpraxis und Fehler erlauben würde ohne das eine Ausnahme geworfen wird.

    Die convertTo() Methode akzeptiert einen optionalen Parameter. Mit diesem Parameter kann eine Genauigkeit, für den zurückgegebenen Wert, definiert werden. Die Standardgenauigkeit ist '2'.

    Example 47.9. Konvertieren

    $locale = new Zend_Locale('de');
    $mystring "1.234.567,89";
    $unit = new Zend_Measure_Weight($mystring,'POND'$locale);

    print 
    "Kilo:".$unit->convertTo('KILOGRAM');

    // Konstanten sind eine "bessere Praxis" als Zeichenketten
    print "Tonne:".$unit->convertTo(Zend_Measure_Weight::TON);

    // define a precision for the output
    print "Tonne:".$unit->convertTo(Zend_Measure_Weight::TON3);

    47.4.2. Addieren und Subtrahieren

    Maßeinheiten können miteinander durch add() addiert und durch sub() subtrahiert werden. Das Ergebnis ist vom selben Typ die das originale Objekt. Dynamische Objekte unterstützen einen flüssigen Programmierstil, bei dem komplexe Sequenzen von Operationen geschachtelt werden können ohne das Risiko eines Nebeneffekts durch die Veränderung des Eingabe Objektes.

    Example 47.10. Werte addieren

    // Objekte definieren
    $unit = new Zend_Measure_Length(200Zend_Measure_Length::CENTIMETER);
    $unit2 = new Zend_Measure_Length(1Zend_Measure_Length::METER);

    // $unit2 zu $unit1 addieren
    $sum $unit->add($unit2);

    echo 
    $sum// Ausgabe "300 cm"


    [Note] Automatische Konvertierung

    Beim Addieren eines Objektes zu einem anderen wird dieses automatisch in die richtige Einheit konvertiert. Es ist nicht notwendig convertTo() aufzurufen bevor unterschiedliche Einheiten addiert werden.

    Example 47.11. Subtrahieren

    Das Subtrahieren von Maßeinheiten funktioniert genauso wie das Addieren.

    // Objekte definieren
    $unit = new Zend_Measure_Length(200Zend_Measure_Length::CENTIMETER);
    $unit2 = new Zend_Measure_Length(1Zend_Measure_Length::METER);

    // $unit2 von $unit subtrahieren
    $sum $unit->sub($unit2);

    echo 
    $sum;


    47.4.3. Identität Vergleichen

    Maßeinheiten können genauso verglichen werden, aber ohne automatische Konvertierung. Das bedeutet das equals() nur dann TRUE zurückgibt wenn beide, sowohl der Wert als auch die Einheit identisch sind.

    Example 47.12. Unterschiedliche Maßeinheiten

    // Maßeinheiten definieren
    $unit = new Zend_Measure_Length(100Zend_Measure_Length::CENTIMETER);
    $unit2 = new Zend_Measure_Length(1Zend_Measure_Length::METER);

    if (
    $unit->equals($unit2)) {
        print 
    "Beide Maßeinheiten sind identisch";
    } else {
        print 
    "Das sind unterschiedliche Maßeinheiten";
    }


    Example 47.13. Identische Maßeinheiten

    // Maßeinheiten definieren
    $unit = new Zend_Measure_Length(100Zend_Measure_Length::CENTIMETER);
    $unit2 = new Zend_Measure_Length(1Zend_Measure_Length::METER);

    $unit2->setType(Zend_Measure_Length::CENTIMETER);

    if (
    $unit->equals($unit2)) {
        print 
    "Beide Maßeinheiten sind identisch";
    } else {
        print 
    "Das sind unterschiedliche Maßeinheiten";
    }


    47.4.4. Werte Vergleichen

    Um herauszufinden ob eine Maßeinheite kleiner oder größer als eine andere ist kann compare() verwendet werden, was 0, -1 oder 1 zurückgibt, abhängig von der Differenz zwischen den zwei Objekten. Identische Maßeinheiten geben 0 zurück, kleinere einen negativen, und größere einen positiven Wert.

    Example 47.14. Differenz

    $unit = new Zend_Measure_Length(100Zend_Measure_Length::CENTIMETER);
    $unit2 = new Zend_Measure_Length(1Zend_Measure_Length::METER);
    $unit3 = new Zend_Measure_Length(1.2Zend_Measure_Length::METER);

    print 
    "Gleich:".$unit2->compare($unit);
    print 
    "Kleiner:".$unit2->compare($unit3);
    print 
    "Größer:".$unit3->compare($unit2);


    47.4.5. Werte per Hand ändern

    Um den Wert einer Maßeinheit explizit zu Ändern, kann setValue() verwendet werden um den aktuellen Wert zu überschreiben. Die Parameter sind identisch mit denen des Konstruktors.

    Example 47.15. Verändern eines Wertes

    $locale = new Zend_Locale('de_AT');
    $unit = new Zend_Measure_Length(1,Zend_Measure_Length::METER);

    $unit->setValue(1.2);
    echo 
    $unit;

    $unit->setValue(1.2Zend_Measure_Length::KILOMETER);
    echo 
    $unit;

    $unit->setValue("1.234,56"Zend_Measure_Length::MILLIMETER,$locale);
    echo 
    $unit;


    47.4.6. Typ per Hand ändern

    Um den Typ einer Maßeinheit ohne den Wert zu verändern kann setType() verwendet werden.

    Example 47.16. Verändern des Typs

    $unit = new Zend_Measure_Length(1,Zend_Measure_Length::METER);
    echo 
    $unit// Ausgabe "1 m"

    $unit->setType(Zend_Measure_Length::KILOMETER);
    echo 
    $unit// Ausgabe "1000 km"

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...