php.de

Zurück   php.de > php.de Intern > Wiki Diskussionsforum

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.05.2010, 16:06  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Okay das displayPerson() ändere ich ab. Wie würdest du das Validator Beispiel umschreiben? Da ne abbruchbedingung rein zu schieben wird schwierig. Es sollte halt möglichst kurz und knapp sein sonst liest sich keiner den Code durch!
__________________
▇█▓▒░◕‿‿◕░▒▓█▇
Flor1an ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 05.05.2010, 16:17  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

PHP-Code:
<?php

class Validator
{
 
    private 
$__value
    private 
$__error false;
 
    public function 
value($value
    {
        
$this->__value $value;
        return 
$this;
    }
 
    public function 
isRequired() 
    {
        if (
$this->__error != false) {
            if (empty(
$this->__value)) {
                
$this->__error true;
            }
        }
        return 
$this;
    }
 
    public function 
setLength($min$max false
    {
        if (
$this->__error != false) {
            if (
$min !== false AND strlen($this->__value) < $min) {
                
$this->__error true;
            }
            if (
$max !== false AND strlen($this->__value) > $max) {
                
$this->__error true;
            }
        }
        return 
$this;
    }
 
    public function 
isDate() 
    {
        if (
$this->__error != false) {
            
$date explode('.'$this->__value); // deutsches Datum Format (tt.mm.jjjj)
            
if (!checkdate($date[1], $date[0], $date[2])) {
                
$this->__error true;
            }
        }
        return 
$this;
    }
 
    public function 
isNumeric()
    {
        if (
$this->__error != false) {
            if (!
is_numeric($this->__value)) {
                
$this->__error true;
            }
        }
        return 
$this;
    }
 
    public function 
numRange($a$b false)
    {
        if (
$this->__error != false) {
            if (
$a !== false AND $this->__value $a) {
                
$this->__error true;
            }
            if (
$b !== false AND $this->__value $b) {
                
$this->__error true;
            }
        }
        return 
$this;
    }
 
    public function 
isValid()
    {
        return ! 
$this->__error;
    }
 
}
Notfalls lieber weniger Methoden benutzen. Früher ABbruch geht natürlich auch:
PHP-Code:
   public function numRange($a$b false)
    {
        if (
$this->__error == false) {
            return 
$this;
        }

        if (
$a !== false AND $this->__value $a) {
            
$this->__error true;
        }
        if (
$b !== false AND $this->__value $b) {
            
$this->__error true;
        }
        return 
$this;
    } 
Ggf. würde ich nochmal das Erstellen eines Setups als Beispiel für Chaining ergänzen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 06.05.2010, 08:55  
Erfahrener Benutzer
 
Registriert seit: 15.04.2010
Beiträge: 813
PHP-Kenntnisse:
Fortgeschritten
Paul.Schramenko befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
3/ Ich würde auf jeden Fall Negativargumente mit in den Artikel nehmen:
- es wird ständig eine Objekt herumgereicht.
Das ist wohl richtig, erhöht doch enorm die Lesbarkeit. Jetzt mal ne Frage von meiner Seite aus, macht dass denn soviel aus, wenn ein Objekt herumgereicht wird? Jetzt mal rein performancetechnisch und allgemein.

Zitat:
Zitat von nikosch Beitrag anzeigen
- Fehlerbehandlung ist schwierig, da die Methoden nicht vorzeitig abgebrochen werden können sondern immer $this zurückgeben müssen
Finde ich eigentich nicht. IMHO sollte Method chaining nur bei Settern verwendet werden, bzw. bei Funktionen, die im Normalfall keinen Wert zurückliefern.
Um das näher zu erläutern, ein kleines Bsp. wie in meinem Code in der Regel aussieht:
PHP-Code:
$valid $obj->setValue($val1)
             ->
setValueTwo($val2)
             ->
setValueThree($val3)
             ->
setValueFour($val4)
             ->
save(); 
PHP-Code:
public function setValue($val)
{
    
$this->_value $val;
    return 
$this;

PHP-Code:
public function save() 
{
    if (
$this->_isValid()) {
        return 
$this->_save();
    }
    return 
false;

Gerade beim verarbeiten von Formulareingaben, muss man IMHO erst alle Werte setzen, dann validieren und und am Ende je nachdem zu welchem Ergebnis die Validierung geführt hat, die Daten speichern/weiterverarbeiten oder einen Fehler ausgeben und die Werte ins Formular setzen.

Hoffe ich rede jetzt nicht am Thema vorbei...
__________________
"My software never has bugs, it just develops random features."
"Real programmers don't comment. If it was hard to write, it should be hard to understand!"
Positive Bewertungen sind nicht unwillkommen...
Paul.Schramenko 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
Sagt dies jemand was? Invalid method in request QUIT tomx992 PHP-Fortgeschrittene 7 28.02.2006 06:27
method post frage test022 PHP Tipps 2007 10 23.12.2005 13:02
Training von neuronalen Netzen PHP Tipps 2005 5 28.09.2005 15:12
[Erledigt] Problem: The requested method POST is not allowed for the Server, Hosting und Workstations 17 31.05.2005 15:15
requested method POST is not allowed for the URL /index.html PHP-Fortgeschrittene 10 30.05.2005 19:36
" und \ mit method post ohne maskierung übergeben PHP Tipps 2005 9 21.04.2005 14:55
Form method post Problem test022 PHP Tipps 2005 15 05.01.2005 20:20
PostgreSQL Orolhawion Server, Hosting und Workstations 2 14.12.2004 21:58
[Erledigt] SOAP/Client.php: PHP Fatal error: Method SOAP_Client::__call PHP-Fortgeschrittene 6 25.11.2004 09:48

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php methode ( = false), chaining

Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 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