Rückgabewerte einer Methode?

03/25/2014 17:29 Phillor#1
Hallo,

ich bin zurzeit noch ein ziemlicher Neuling im Bereich der objektorientierten Programmierung in PHP und habe mir um ein bisschen zu üben eine Userklasse geschrieben, die z.B. User in einer MySQL Datenbank registrieren und einloggen kann. Dazu habe ich jedoch eine Frage:

Unzwar habe ich das zurzeit so geregelt, dass wenn der User erfolgreich Registriert wurde, die register Methode 1, also true, zurückgibt. Vorher wird allerdings überprüft, ob der Nutzername oder die E-Mailadresse schon vergeben ist. Da ich dem Benutzer gerne aussagekräftige Meldungen zurückgeben möchte, gibt die Methode eine 0 zurück, wenn der Nutzername bereits vergeben ist und eine 2, wenn die E-Mailadresse bereits vergeben ist, um eben anhand der Nummern die jeweiligen Fehlermeldungen ausgeben zu können. Ist das so in Ordnung, oder gibt es da eine andere, bessere Lösung?
Da bin ich mir nämlich zurzeit ein wenig unsicher, ob man das so machen kann oder als unsauberer Programmierstil oder so ähnlich gilt. ^^

Gruß,
Phillor
03/26/2014 09:12 KoKsPfLaNzE#2
Du könntest einfach eine Exception werfen mit der du dann die Errors "ordentlich" zurück gibst, am besten gleich den richtigen Text oder bestimmte codes wie "username_exists".

[Only registered and activated users can see links. Click Here To Register...]

Musst nur dran denken das du den Error auch mit einem Try and CatchBlock abfängst.
03/26/2014 11:40 Phillor#3
Ja, daran hatte ich auch schon gedacht, war mir aber nicht sicher, ob ich das bei solchen Fehlermeldungen auch so machen kann. Dachte das man Exceptions in PHP nur dann wirft, wenn eigene Semantik- oder Syntaxfehlermeldungen werfen möchte.
03/26/2014 12:56 xEncounter#4
$connection = mysql_connect.....
if($connection) or die(mysql_error())
03/26/2014 14:04 tolio#5
exceptions sind in der regel recht teuer, deshalb wirft man eine exception grundsätzlich immer dann wenn ein kritischer UND nicht behandelbarer fehler auftritt, weil alles andere kann man auch ohne exception behandeln

also bsp:

datenbankverbindung kann nicht hergestellt werden
-> exception werfen, komplett durchrauschen lassen oder auf untester ebene fangen und fehlerseite anzeigen

übergebener index ungültig (?page=1000),
username/pw falsch
-> keine exception, normal weitermachen und entsprechende meldung für den nutzer anzeigen
03/26/2014 17:41 Phillor#6
@ xEncounter
Schön und gut, nur arbeite ich damit nicht mehr. Bin schon etwas länger auf PDO umgestiegen.

@ tolio
Danke für den Tipp :)
Nur, ist das mit den Rückabewerten, wie ich im ersten Post beschrieben habe in Ordnung, oder gibts da gebräuchlichere Methoden, wie man sowas handhabt?
03/26/2014 18:16 tolio#7
ob du jetzt mit deiner methode zahlen zurückgibtst oder direkt die fehlermeldung oder fehlercodes oder sonst was, ist dir überlassen. oop soll die wartbarkeit und wiederverwendbarkeit unterstützen, also überlege einfach ob das in dein kozept passt
03/26/2014 18:21 Phillor#8
alles klar, vielen Dank :)
03/26/2014 19:15 KoKsPfLaNzE#9
ich mach das immer so das ich zuerst checke was hat der user eingegeben und wenn dies auch wirklich alles richtig ist werfe ich es in die db, sprich 2 methoden aufrufe in der action.

wobei der Userinput check mir ein array mit den errors zurueck gibt und die setUser method die erstellte UserId

der try and catch block macht aber sin, wenn es zu dem fall kommen sollte das zwischen check und insert auf einmal doch ein User mit dem Username vorhanden ist, klar das sind mehr rin theoretische fall aber man weis ja nie, abfangen sollte man es schon.
03/27/2014 08:14 Phillor#10
Okay, danke für eure Hilfe :)