PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Methoden Parameter direkt validieren (http://www.selfphp.de/forum/showthread.php?t=21274)

floorball92 07.04.2009 11:29:09

Methoden Parameter direkt validieren
 
Servus,

habe mal ne Frage. Möchte in einer Klasse alle Parameter der Methoden direkt validieren.

Bisher habe ich immer dann das so gemacht:

PHP-Code:

$parameter self::methode($parameter);
... 

Aber das ist nervig, vor allem wenn ich irgendwie 5 Parameter habe und außerdem sind es einige Methoden.

__set() greift ja nur, wenn ich es in $this oder self speichere.

Gibt es so ne ähnliche Lösung für Parameter? oder allgemein alle lokalen Variablen der Klasse?

Gruß Sebastian

DokuLeseHemmung 07.04.2009 13:01:20

AW: Methoden Parameter direkt validieren
 
Irgendwo mußt du prüfen!
Nervig hin oder her... was sein muß, muß sein.

Prüfe die Parameter in der Methode, und wenn falsch, dann wirf eine Exception.

Zitat:

oder allgemein alle lokalen Variablen der Klasse?
Das ist doch Quatsch!
Der Schrott darf da erst gar nicht rein.

floorball92 07.04.2009 14:34:16

AW: Methoden Parameter direkt validieren
 
Hallo,

ich meinte sowas, dass immer wenn ich eine Variable deklariere, sie direkt von der methode geprüft wird. Also wenn jetzt die Variable $string_fuer_die_datenbank als erstes auftaucht, direkt von einer Funktion bzw. Methode geprüft wird.

Gruß Sebastian

DokuLeseHemmung 07.04.2009 14:38:45

AW: Methoden Parameter direkt validieren
 
Verstehe ich nicht!
Was willst du selbst deklarierte Variablen prüfen?
Traust du dir selber nicht?

Ausserdem:
Verzichte auf globale Variablen!

floorball92 07.04.2009 15:17:21

AW: Methoden Parameter direkt validieren
 
mit lokale Variablen meine ich Variablen, die nur in einer Methode existieren, also Attribute zähl ich nicht dazu.

Ich meine einfach nur, um das zu automatisieren, um mir den entsprechenden Code zu sparen, wenn ich immer einzeln meine Parameter überprüfe.

Also sowas wie __set() nur halt für lokale Variablen und nicht Klassen Attribute.

DokuLeseHemmung 07.04.2009 15:36:00

AW: Methoden Parameter direkt validieren
 
Weiterhin Bahnhof!
Woher soll denn dein "Automat" wissen, welches DatenFormat dort zu erwarten ist.
z.B. ist ein Vorname ganz was anderes als eine BLZ

http://de.php.net/manual/de/book.filter.php
http://de.php.net/manual/de/function.func-get-args.php

floorball92 07.04.2009 20:04:27

AW: Methoden Parameter direkt validieren
 
Die Methode soll nur gegen SQL Injections abriegeln, von daher ist der Datentyp egal.

cortex 08.04.2009 09:42:46

AW: Methoden Parameter direkt validieren
 
Zitat:

Zitat von floorball92 (Beitrag 126588)
[...] wenn ich immer einzeln meine Parameter überprüfe. Also sowas wie __set() nur halt für [...]

warum bringst du __set( ) immer wieder in zusammenhang mit validierung? aus dem handbuch:

Zitat:

__set() is run when writing data to inaccessible members.
und nichts anderes!

Zitat:

Zitat von floorball92 (Beitrag 126588)
Die Methode soll nur gegen SQL Injections abriegeln

möglicherweise bringt's dir mehr, dieses anliegen mit uns zu diskutieren. ich habe den eindruck, du befindest dich auf dem holzweg.

cx

DokuLeseHemmung 08.04.2009 09:56:36

AW: Methoden Parameter direkt validieren
 
Zitat:

Zitat von floorball92 (Beitrag 126596)
Die Methode soll nur gegen SQL Injections abriegeln, von daher ist der Datentyp egal.

Beschäftige dich mit "prepared Statements" oder "ORM", dann brauchst du das nicht mehr!
http://de3.php.net/manual/de/book.mysqli.php
http://de.php.net/manual/de/book.pdo.php
http://www.doctrine-project.org/

floorball92 08.04.2009 10:10:07

AW: Methoden Parameter direkt validieren
 
Zitat:

Zitat von DokuLeseHemmung (Beitrag 126607)
Beschäftige dich mit "prepared Statements" oder "ORM", dann brauchst du das nicht mehr!
http://de3.php.net/manual/de/book.mysqli.php
http://de.php.net/manual/de/book.pdo.php
http://www.doctrine-project.org/

Ok, dass hört sich auch vernünftig an.

Zu ORM: habe schon öfters gehört, dass ORM ordentlich an der Performance nagt. Meine sogar, Carsten Möhrke wäre der gewesen, der dass gesagt hat.

Und zur MySQLi Klasse, habe ich das richtig verstanden, dort bin ich gegen sämtliche SQL Attacken gerüstet?


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:16:24 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.