php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.11.2007, 14:07  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard Sortierbare Objekte

Hallo,

ich möchte für einen Formular-Generator (endlich komme ich wieder dazu) die Liste von Operatoren, die einem Element zugeordnet werden können, sortierbar machen.

Operatoren (Form_Operator) können Filter (Form_Operator_Filter, z.B. filterTrim), Validator (Form_Operator_Validator, z.B. isNumeric, isNotEmpty, ..) oder Conditionals (Form_Operator_Conditional, z.B. isOptional, checkDate) sein. Filter können den Wert eines Elementes bearbeiten, Validator können den Zustand (value) testen und Conditionals (Konsistenzprüfer nenn ich sie mal) prüfen den Zustand gegen andere Elemente im Formular. isOptional als Conditional prüft beispielsweise sich selbst auf Validität und reagiert je nach dem mit filterEmpty (oder was auch immer als Standard eingestellt sein wird). Hauptsächlich sollen Conditionals jedoch Elemente untereinander gegentesten, beispielsweise muss bei der Auswahl von "Deutschland" auch eine fünfstellige Postleitzahl eingegeben werden, sind es nur 4, ist lediglich die Auswahl von Schweiz und Österreich "konsistent".

Laaange Rede kurzer Sinn. isOptional() macht nur Sinn, wenn es als wirklich letzter der Validator und Filter ausgeführt wird, Conditionals wiederum als allerletztes!

Gibt es denn so etwas wie ein Sortable Interface für Objekte? Ich denke da an die ArrayObject-Interfaces Countable usw. mit denen ja gewisse Operationen auch möglich sind.

Ich stocher grad hier:
http://www.php.net/~helly/php/ext/sp...rayObject.html
und hier:
http://de2.php.net/manual/en/functio...ject-count.php
herum aber so richtig was finden tu ich nicht?

Dass es usort() gibt weiß ich. Notfalls wirds damit gemacht.
Zergling-new ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.11.2007, 15:02  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Andererseits ist die Reihenfolge fest: Filter, Validator, Conditionals?
Zergling-new ist offline   Mit Zitat antworten
Alt 27.11.2007, 15:41  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Feste Reihenfolge würde ich verneinen:

Kleines Beispiel:
conditionIsset () > filterTrim ()
vs.
filterTrim () > conditionIsset ()

oder

conditionIsInt () > filterToInt ()
vs.
filterToInt () > conditionIsInt ()


Vielleicht noch nicht das beste Bsp. Sicher ließen sich die Filter auch entsprechend kompliziert gestalten. Aber der Weg mit freier Sortierung ist sicher der bessere.
Die Ausgangsfrage habe ich noch nicht ganz verstanden. Wie werden die genannten Elemente denn zugeordnet. Über einen FormHandler? Oder jedem FormItem seine eigenen (wohl eher ungünstig bei Verknüpfungen untereinander, wg. zirkulären Angaben)
Käme Iterator in Frage?
nikosch ist offline   Mit Zitat antworten
Alt 27.11.2007, 16:55  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hmm ich weiß nicht, ich sehe noch kein Beispiel, wann ein Filter nach einem Bedingungstest ausgeführt werden sollte (und wenn übernimmt das ein Conditional, z.B. um den 29. Februar anhand des Monatschecks in einen 1. März zu verwandeln).
MD5-Hash auf ein valides Passwort wird im Zend-Framework als Beispiel für die Flexibilität aufgeführt, das ist aber sehr an den Haaren herbeigezogen. Scheinbar haben die auch keine bessere Idee, was man damit eigentlich machen soll. Wie unterscheide ich denn dann zwischen Backend-Filtern die der User nicht sehen soll und Frontend-Filtern. Schließlich kann es ja nicht gewollt sein, dem User - wenn die restlichen Eingaben nicht valide waren - einen MD5 String anstatt seines Passwortes zu präsentieren. Klar könnte man jetzt nochmal einen Flag reindonnern, der das unterscheidet. Ich weiß nicht, das überzeugt mich noch nicht so ganz ..
Zergling-new ist offline   Mit Zitat antworten
Alt 27.11.2007, 19:27  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Vielleicht reden wir auch aneinander vorbei. Die > oben sollten keine Bedingung, sondern die Reihenfolge der Abarbeitung signalisieren. Bestimmte Validierungen (isset z.B.) machen nur als erste Aktion Sinn. Ebenso wie is_numeric () vor (int) $value erfolgen sollte
nikosch ist offline   Mit Zitat antworten
Alt 27.11.2007, 23:19  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Ihr beiden,

zieht man die Betrachtung von der Seite der Sicherheit (Typensicherheit, bzw. Applikationssicherheit) auf, so ist meiner Meinung nach der Filter zuerst zu applizieren. In meiner Filter-Implementierung verwende ich noch einen generischeren Ansatz: ich filtere _alle_ REQUEST-Daten. Anschließend sollten Validatoren folgen. Zu diesen zähle ich aber auch sowas wie "isOptional", denn es sollte immer möglich sein mehrere Validatoren auf ein Feld zu definieren. Man kann dann "isOptional" und "validateDate" definieren um ein optionales Feld nur dann zu validieren, wenn eine Eingabe erfolgt ist. Das Thema "Conditionals" kann man für das Thema Datum auch in Validatoren packen ("isValidDate"), Ausgaben eines Feldes kann man mit Providern regeln (hatten wir kürzlich). Man gibt einem Feld dabei einen OutputProvider, der einem das entsprechende zurückliefert. Beim Passwort-Feld ist das oft ein "MD5OutputProvider". Letzteres halte ich aber für ein denkbar schlechtes Beispiel, denn das sollte die Businessschicht regeln. Diese muss nämlich oft eine Bestätigungsmail für eine Anmeldung verschicken, oder diverse andere Themen abhandeln. Nach dererlei Unfug, kann man der Datenschicht, dann ein verändertes Benutzer-Objekt übergeben, bei dem das Passwort ein MD5-Hash ist und es persistieren.

Viel interessanter ist das Thema Formulargenerierung an sich. Hier muss man vor allem das Problem der Gestaltung in HTML sauber lösen. Es ist nicht nur wichtig, die Felder in der Reihenfolge sortierbar zu machen, sondern auch die Anordnung per se muss x-Browser-kompatibel, ... sein.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Referenzen auf Objekte innerhalb eines Arrays PHP-Fortgeschrittene 6 31.08.2009 17:06
[Erledigt] objekte mit bilddaten serialisieren lumo PHP Tipps 2008 1 17.07.2008 12:25
[Erledigt] Objekte übergeben Felix PHP Tipps 2008 23 18.06.2008 12:21
Objekte zur Laufzeit Vererbung anhängen Zergling-new PHP-Fortgeschrittene 8 17.11.2007 17:31
Objekte aus Klassenbibliothek zur Verfügung stellen ecomeback PHP Tipps 2008 8 14.10.2007 16:11
2 AJAX Objekte GSJLink HTML, Usability und Barrierefreiheit 6 15.08.2007 16:05
Objekte moose PHP Tipps 2006 13 29.07.2006 16:18
Rekursives durchlaufen meiner Objekte GELight PHP Tipps 2006 2 01.07.2006 23:21
[Erledigt] Objekte vergleichen PHP-Fortgeschrittene 4 08.12.2005 16:20
objekte und klassen notyyy PHP Tipps 2005-2 2 24.10.2005 17:44
Objekte PHP Tipps 2005-2 12 09.10.2005 18:20
[Erledigt] Verständnisfrage OOP - Objekte in MySQL Datenbank schreiben? PHP Tipps 2005 2 19.05.2005 21:40
Ganze Objekte an Script weitergeben dreamingof8a PHP Tipps 2004-2 6 23.11.2004 12:17
[Erledigt] Referenzen auf Objekte PHP-Fortgeschrittene 2 17.08.2004 11:08
Anonyme Objekte? PHP-Fortgeschrittene 18 25.07.2004 22:19

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
zend framework reihenfolge filter validator, prüfer und filter elemente formular

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:27 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.