phpbar.de logo

Mailinglisten-Archive

[php] validierung und funktionsablauf

[php] validierung und funktionsablauf

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mit Nov 22 09:22:09 CET 2006


Hallo Michael,

Am Mittwoch, 22. November 2006 09:00 schrieb Michael Borchers:
> Welchen Ablauf (z.B. innerhalb eines Skriptes oder auch einer Klasse)
> haltet ihr für sinnvoller?!
>
>
> 1.
> if(!empty($var))
> {
>     go($var);
> }
>
> function go($var)
> {
>     echo $var;
> }
>
>
> 2.
> go($var);
>
> function go($var)
> {
>     if(!empty($var))
>     {
>         echo $var;
>     }
> }
>
>
> Ich bevorzuge z Zt Variante Nr. 2, z.B. in meiner Klasse.
> Also einfach die Funktionen aufrufen und diese auch validieren
> lassen, ob überhaupt etwas ausgeführt werden soll.
>
> Oder ist das performance-technisch schon dramatisch?!

probier es hinsichtlich der Performanz doch mal aus. :-)

Im Prinzip hängt die Antwort auf Deine Frage aber vom Zusammenhang ab, 
würde ich sagen. Beide Lösungen haben ihre Vor- und Nachteile.

Lösung 1. hat den Vorteil, daß Du die Funktion gar nicht erst aufrufst, 
wenn es nicht nötig ist. Je nachdem, wie oft und wo Du die Funktion in 
Deinen Skripten aufrufen möchtest, hast Du aber den Nachteil, daß Du 
die if-Bedindung jedes Mal wiederholen mußt. Damit schaffst Du 
redundanten Code, der vielleicht geringfügig schneller, aber - zuweilen 
sogar deutlich - schlechter zu warten sein wird.

Bei Lösung 2. ist es umgekehrt. Wenn die if-Bedingung nicht erfüllt ist, 
dann führst Du unnötigerweise zuvor auch den Funktionsaufruf durch. 
Dafür ist die if-Bedingung nur einmal hinterlegt.

Es gibt jedoch einen Punkt, wo die Lösung 1. einen zusätzlichen Vorteil 
hat:

Du fragst ja auf !empty() ab, was auch bedeuten kann, daß $var an der 
Stelle überhaupt nicht existiert. In diesem Falle tritt bei der Lösung 
2. einen Fehler auf.

In diesem Fall wäre Lösung 1. die richtige Wahl, wobei ich allerdings 
der Meinung bin, daß solch ein Fehler, daß im Skript eine Variable 
verwendet werden soll, die u.U. nicht existiert, nicht auftreten 
dürfte.

Wenn man das noch weiterdenkt, muß eigentlich jede Variable zu jedem 
Zeitpunkt an jedem Ort in Deinen Skripten vernünftig deklariert und 
initalisiert sein. Setzt man das voraus und programmiert 
objektorientiert, dann kannst Du Dir die if-Abfrage komplett sparen und 
die Funktion bzw. Methode einfach eine Exception werfen lassen, sollte 
die Variable einmal unerwarteterweise nicht korrekt deklariert oder 
initalisiert sein. Die geworfene Ausnahme kannst Du dann irgendwo 
auffangen und verarbeiten.


Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive