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

    Chapter 34. Zend_Filter

    Table of Contents

    34.1. Einführung
    34.1.1. Was ist ein Filter?
    34.1.2. Normale Verwendung von Filtern
    34.1.3. Verwenden der statischen staticFilter() Methode
    34.1.3.1. Namespaces
    34.1.4. Doppelt filtern
    34.2. Standard Filter Klassen
    34.2.1. Alnum
    34.2.1.1. Unterstützte Optionen für Zend_Filter_Alnum
    34.2.1.2. Grundsätzliche Verwendung
    34.2.1.3. Leerzeichen erlauben
    34.2.2. Alpha
    34.2.2.1. Unterstützte Optionen für Zend_Filter_Alpha
    34.2.2.2. Einfache Verwendung
    34.2.2.3. Leerzeichen erlauben
    34.2.3. BaseName
    34.2.3.1. Unterstützte Optionen für Zend_Filter_BaseName
    34.2.3.2. Einfache Verwendung
    34.2.4. Boolean
    34.2.4.1. Standardverhalten von Zend_Filter_Boolean
    34.2.4.2. Das Verhalten von Zend_Filter_Boolean ändern
    34.2.4.3. Lokalisierte Boolsche Werte
    34.2.4.4. Casten ausschalten
    34.2.5. Callback
    34.2.6. Compress und Decompress
    34.2.6.1. Generelle Handhabung
    34.2.6.2. Ein Archiv erstellen
    34.2.6.3. Ein Archiv dekomprimieren
    34.2.6.4. Bz2 Adapter
    34.2.6.5. Gz Adapter
    34.2.6.6. Lzf Adapter
    34.2.6.7. Rar Adapter
    34.2.6.8. Tar Adapter
    34.2.6.9. Zip Adapter
    34.2.7. Decrypt
    34.2.7.1. Entschlüsselung mit Mcrypt
    34.2.7.2. Entschlüsselung mit OpenSSL
    34.2.8. Digits
    34.2.8.1. Unterstützte Optionen für Zend_Filter_Digits
    34.2.8.2. Einfache Verwendung
    34.2.9. Dir
    34.2.9.1. Unterstützte Optionen für Zend_Filter_Dir
    34.2.9.2. Einfache Verwendung
    34.2.10. Encrypt
    34.2.10.1. Verschlüsselung mit Mcrypt
    34.2.10.2. Verschlüsselung mit OpenSSL
    34.2.10.2.1. Vereinfachte Verwendung mit Openssl
    34.2.10.2.2. Komprimieren des Inhalts
    34.2.11. HtmlEntities
    34.2.11.1. Unterstützte Optionen für Zend_Filter_HtmlEntities
    34.2.11.2. Einfache Verwendung
    34.2.11.3. Hochkomma Stil
    34.2.11.4. Helfer Methoden
    34.2.12. Int
    34.2.12.1. Unterstützte Optionen für Zend_Filter_Int
    34.2.12.2. Einfache Verwendung
    34.2.13. LocalizedToNormalized
    34.2.13.1. Normalisierung von Zahlen
    34.2.13.2. Normalisierung für Datum und Zeit
    34.2.14. NormalizedToLocalized
    34.2.14.1. Lokalisierung von Zahlen
    34.2.14.2. Lokalisierung für Datum und Zeit
    34.2.15. Null
    34.2.15.1. Standardverhalten für Zend_Filter_Null
    34.2.15.2. Ändern des Verhaltens von Zend_Filter_Null
    34.2.16. PregReplace
    34.2.17. RealPath
    34.2.18. StringToLower
    34.2.19. StringToUpper
    34.2.20. StringTrim
    34.2.20.1. Unterstützte Optionen für Zend_Filter_StringTrim
    34.2.20.2. Einfache Verwendung
    34.2.20.3. Standardverhalten für Zend_Filter_StringTrim
    34.2.21. StripNewlines
    34.2.22. StripTags
    34.3. Filter Ketten
    34.3.1. Ändern der Reihenfolge der Filterkette
    34.4. Filter schreiben
    34.5. Zend_Filter_Input
    34.5.1. Filter und Prüfregeln deklarieren
    34.5.2. Filter und Prüfbearbeiter erstellen
    34.5.3. Geprüfte Felder und andere Reporte empfangen
    34.5.3.1. Abfragen ob die Eingabe gültig ist
    34.5.3.2. Ungültige, fehlende oder unbekannte Felder erhalten
    34.5.3.3. Gültige Felder bekommen
    34.5.4. Metakommandos verwenden um Filter oder Prüfregeln zu kontrollieren
    34.5.4.1. Das FIELDS Metakommando
    34.5.4.2. Das PRESENCE Metakommando
    34.5.4.3. Das DEFAULT_VALUE Metakommando
    34.5.4.4. Das ALLOW_EMPTY Metakommando
    34.5.4.5. Das BREAK_CHAIN Metakommando
    34.5.4.6. Das MESSAGES Metakommando
    34.5.4.7. Verwenden von Optionen um Metakommandos für alle Regeln zu setzen
    34.5.5. Namensräume für Filterklassen hinzufügen
    34.6. Zend_Filter_Inflector
    34.6.1. Funktion
    34.6.2. Pfade zu alternativen Filtern setzen
    34.6.3. Das Ziel der Beugung setzen
    34.6.4. Beugungsregeln
    34.6.4.1. Statische Regeln
    34.6.4.2. Beugungsregeln filtern
    34.6.4.3. Viele Regeln auf einmal setzen
    34.6.5. Hilfsmethoden
    34.6.6. Zend_Config mit Zend_Filter_Inflector verwenden

    34.1. Einführung

    Die Zend_Filter Komponente bietet ein Set von normalerweise benötigen Datenfiltern. Sie bietet auch einen einfachen Filterketten Mechanismus mit dem mehrere Filter bei einem einfachen Wert in einer benutzerdefinierten Reihenfolge ausgeführt werden können.

    34.1.1. Was ist ein Filter?

    In der physikalischen Welt wird ein Filter typischerweise für das entfernen von unerwünschten Teilen einer Eingabe verwendet, und der gewünschte Teil der Eingabe wird zur Ausgabe des Filters weitergeleitet (z.B. Kaffee). In solchen Szenarien ist ein Filter ein Operator der ein Subset von der Eingabe produziert. Diese Art des Filterns ist für Web Anwendungen nützlich - entfernen illegaler Eingaben, trimmen von unnötigen Leerzeichen, usw.

    Diese Basisdefinition eines Filter kann erweitert werden um generelle Umwandlungen über eine Eingabe zu beinhalten. Eine übliche Umwandlung die in Web Anwendungen durchgeführt wird, ist das auskommentieren von HTML Entititäten. Zum Beispiel, wenn ein Formular Feld automatisch mit einer unsicheren Eingabe übergeben wird (z.B. von einem Web Browser), sollte dieser Wert entweder frei von HTML Entititäten sein oder nur auskommentierte HTML Entititäten enthalten, um unerwünschtes Verhalten und Sicherheitslöcher zu vermeiden. Um diesen Anforderungen gerecht zu werden müssen HTML Entititäten die in der Eingabe vorkommen entweder entfernt oder auskommentiert werden. Natürlich hängt es von der Situation ab welcher Weg mehr zutrifft. Ein Filter der HTML Entititäten entfernt operiert innerhalb der Beschreibung der ersten Definition von Filter - ein Operator der ein Subset von einer Eingabe produziert. Ein Filter der HTML Entititäten auskommentiert, wandelt die Eingabe um (z.B. "&" wird umgewandelt in "&"). Solche Fälle zu unterstützen ist für Web Entwickler sehr wichtig und "zu filtern", im Kontext der Verwendung von Zend_Filter, bedeutet einige Umwandlungen über Eingabedaten durchzuführen.

    34.1.2. Normale Verwendung von Filtern

    Diese Filterdefinition bekanntgegeben zu haben bietet die Grundlage für Zend_Filter_Interface, welches eine einzelne Methode benötigt die filter() genannt wird, und von der Filterklasse implementiert werden muß.

    Nachfolgend ist ein grundsätzliches Beispiel der Verwendung eines Filters über zwei Eingabedaten, einem Und-Zeichen (&) und einem Hochkommazeichen ("):

    $htmlEntities = new Zend_Filter_HtmlEntities();

    echo 
    $htmlEntities->filter('&'); // &
    echo $htmlEntities->filter('"'); // "

    34.1.3. Verwenden der statischen staticFilter() Methode

    Wenn es unbequem ist einen gegebene Filterklasse zu Laden und eine Instanz des Filters zu erstellen, kann die statische Zend_Filter::staticFilter() Methode als alternativer Aufrufstil verwendet werden. Das erste Argument dieser Methode ist der Eingabewert, der die filter() Methode passieren soll. Das zweite Argument ist ein String, der dem Basisnamen der Filterklasse, relativ zum Zend_Filter Namensraum, entspricht. Die filterStatic() Methode lädt die Klasse automatisch, erstellt eine Instanz, und führt die Eingabedaten der filter() Methode zu.

    echo Zend_Filter::filterStatic('&''HtmlEntities');

    Es kann auch ein Array von Konstruktor Argumenten übergeben werden, wen diese für die Filterklasse benötigt werden.

    echo Zend_Filter::filterStatic('"',
                                   
    'HtmlEntities',
                                   array(
    'quotestyle' => ENT_QUOTES));

    Die statische Verwendung kann für das Ad-Hoc aufrufen von Filtern bequem sein, aber wenn man einen Filter über mehrere Eingaben anwenden will ist es effizienter den ersten Beispiel von oben zu folgen, eine Instanz des Filter Objekts zu erstellen und dessen filter() Methode aufzurufen.

    Die Zend_Filter_Input Klasse erlaubt es also, mehrere Filter zu instanzieren und auszurufen, und wenn benötigt, den Prüfklassen diese Sets von Eingabedaten zu verarbeiten. Siehe Zend_Filter_Input.

    34.1.3.1. Namespaces

    Wenn man mit selbst definierten Filtern arbeitet, dann kann man an Zend_Filter::filterStatic() einen vierten Parameter übergeben welcher der Namespace ist, an dem der eigene Filter gefunden werden kann.

    echo Zend_Filter::filterStatic(
        
    '"',
        
    'MyFilter',
        array(
    $parameters),
        array(
    'FirstNamespace''SecondNamespace')
    );

    Zend_Filter erlaubt es auch standardmäßige Namespaces zu setzen. Das bedeutet das man Sie einmal in der Bootstrap setzt und sie nicht mehr bei jedem Aufruf von Zend_Filter::filterStatic() angeben muß. Der folgende Codeschnipsel ist identisch mit dem vorherigen.

    Zend_Filter::setDefaultNamespaces(array('FirstNamespace''SecondNamespace'));
    echo 
    Zend_Filter::filterStatic('"''MyFilter', array($parameters));
    echo 
    Zend_Filter::filterStatic('"''OtherFilter', array($parameters));

    Der Bequemlichkeit halber gibt es die folgenden Methoden welche die Behandlung von Namespaces erlauben:

    • Zend_Filter::getDefaultNamespaces(): Gibt alle standardmäßigen Namespaces als Array zurück.

    • Zend_Filter::setDefaultNamespaces(): Setzt neue standardmäßige Namespaces und überschreibt alle vorher gesetzten. Es wird entweder ein String für einen einzelnen Namespace akzeptiert, oder ein Array für mehrere Namespaces.

    • Zend_Filter::addDefaultNamespaces(): Fügt zusätzliche Namespaces zu den bereits gesetzten hinzu. Es wird entweder ein String für einen einzelnen Namespace akzeptiert, oder ein Array für mehrere Namespaces.

    • Zend_Filter::hasDefaultNamespaces(): Gibt TRUE zurück wenn ein oder mehrere standardmäßige Namespaces gesetzt sind, und FALSE wenn keine standardmäßigen Namespaces gesetzt sind.

    34.1.4. Doppelt filtern

    Wenn zwei Filter nacheinander verwendet werden muss man bedenken dass es oft nicht möglich ist die originale Ausgabe zu erhalten indem der gegensätzliche Filter verwendet wird. Nehmen wir das folgende Beispiel:

    $original "my_original_content";

    // Einen Filter anwenden
    $filter   = new Zend_Filter_Word_UnderscoreToCamelCase();
    $filtered $filter->filter($original);

    // Sein gegenstück verwenden
    $filter2  = new Zend_Filter_Word_CamelCaseToUnderscore();
    $filtered $filter2->filter($filtered)

    Das oben stehende Code Beispiel könnte zur Vermutung führen dass man die originale Ausgabe erhält nachdem der zweite Filter angewendet wurde. Aber bei logischer Betrachtung ist dies nicht der Fall. Nachdem der erste Filter angewendet wurde, wird my_original_content zu MyOriginalContent geändert. Aber nachdem der zweite Filter angewendet wurde ist das Ergebnis My_Original_Content.

    Wie man sieht ist es nicht immer möglich die originale Ausgabe zu erhalten indem ein Filter angewendet wird der das Gegenteil zu sein scheint. Das hängt vom Filter und auch von der angegebenen Inhalt ab.

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...