public function updatePassword(???) { $sqlUpdatePassword = "UPDATE `user` SET"; $sqlUpdatePassword .= " `password` = ?"; $sqlUpdatePassword .= " WHERE `user_id` = ?"; $stmtUpdatePassword = $this->oDbConn->prepare($sqlUpdatePassword);
if ( $stmtUpdatePassword === false ) { $stmtUpdatePassword->close(); throw new Exception("...."); }
if ( $stmtUpdatePassword->bind_param("si", $sPassword, $iId) === false ) { $stmtUpdatePassword->close(); throw new Execption("...."); }
if ( $stmtUpdatePassword->execute() === false ) { $stmtUpdatePassword->close(); throw new Execption("...."); } }
Nun frag ich mich ruf ich die Methode auf indem ich
$oUserDao->updatePassword("password", 23);
oder
$oUserDao->updatePassword($oUser);
aufrufe.
Natürlich würde dann im oUser das neue Passwort sowie die Id stehen. Derzeit ist das mitführen des Passwort im oUser noch nicht mal vorgesehen ich wüsste aber nicht was da gegen spricht bis auf ein bisschen Byte Verbrauchung.
public function updatePassword(???) { $sqlUpdatePassword = "UPDATE `user` SET"; $sqlUpdatePassword .= " `password` = ?"; $sqlUpdatePassword .= " WHERE `user_id` = ?"; $stmtUpdatePassword = $this->oDbConn->prepare($sqlUpdatePassword);
if ( $stmtUpdatePassword === false ) { $stmtUpdatePassword->close(); throw new Exception("...."); }
if ( $stmtUpdatePassword->bind_param("si", $sPassword, $iId) === false ) { $stmtUpdatePassword->close(); throw new Execption("...."); }
if ( $stmtUpdatePassword->execute() === false ) { $stmtUpdatePassword->close(); throw new Execption("...."); } }
Nun frag ich mich ruf ich die Methode auf indem ich
$oUserDao->updatePassword("password", 23);
oder
$oUserDao->updatePassword($oUser);
aufrufe.
Natürlich würde dann im oUser das neue Passwort sowie die Id stehen. Derzeit ist das mitführen des Passwort im oUser noch nicht mal vorgesehen ich wüsste aber nicht was da gegen spricht bis auf ein bisschen Byte Verbrauchung.
Damit bekommst du jede Exceptions mit und kannst diese weiter verweden, z.b. in eine Datenbank eintrage, per Mail verschicken oder auch einfach nur in eine Datei loggen.
$oUserDao->updatePassword($oUser);
wobei ich das kleine o am Anfang nicht raffe, genauso wie ich nicht DAO schreiben würde sondern Controller...
Wenn das o für Object steht ist es etwas sinn frei, oder schreibst du das bei Jeder Variable?
Also auch $iAge $sName $dBirthday ?
Damit bekommst du jede Exceptions mit und kannst diese weiter verweden, z.b. in eine Datenbank eintrage, per Mail verschicken oder auch einfach nur in eine Datei loggen.
Werde ich mir merken. Die Exception Behandlung mach ich etwas später bis ich mehrere Methoden habe und ich ca. weiß was ich brauche.
Quote:
wobei ich das kleine o am Anfang nicht raffe, genauso wie ich nicht DAO schreiben würde sondern Controller...
Wenn das o für Object steht ist es etwas sinn frei, oder schreibst du das bei Jeder Variable?
Also auch $iAge $sName $dBirthday ?
Ja o steht nur für Object dies schreibe ich eig. bei jeder Variabel dazu. (Außer bei Statements und deren Verarbeitung siehe letzte Methode) Ich weiß in PHP braucht man darauf eig. nicht zu achten ich finde es aber Übersichtlicher. Spätestens wenn man sich den Code ein halbes Jahr später anschaut erleichtert dir das einiges.
Ja o steht nur für Object dies schreibe ich eig. bei jeder Variabel dazu. (Außer bei Statements und deren Verarbeitung siehe letzte Methode) Ich weiß in PHP braucht man darauf eig. nicht zu achten ich finde es aber Übersichtlicher. Spätestens wenn man sich den Code ein halbes Jahr später anschaut erleichtert dir das einiges.
Wenn du dein eigenen Code in einem halben Jahr nicht wieder erkennst, dann solltest du über die Art wie du dein Code schreibst nachdenken...Das "o" ist einfach nur nutzlos und für andere evtl. verwirrend ^^
Wenn du dein eigenen Code in einem halben Jahr nicht wieder erkennst, dann solltest du über die Art wie du dein Code schreibst nachdenken...Das "o" ist einfach nur nutzlos und für andere evtl. verwirrend ^^
Sorry aber das ist die dümmste Aussage die ich bis jetzt gehört habe. Schreib mal deine 20.000 Zeilen Code innerhalb von 3 Monaten, setz dich 3 Monate an ein anderes Projekt und komm wieder hin. Einerseits sagst du er soll seinen Code schreiben wie er will, andererseits soll er es nicht so machen.
Die ungarische Notation war (und ist bei einigen großen Firmen) noch immer Gang und Gebe. Es gab damals halt noch keine genauen Möglichkeiten Bezeichnungen einzufügen, wenn es für andere verwirrend ist dann einfach nur aus einem Grund: Sie haben nicht das nötige Wissen über eine der grundlegenden Notationen in der Programmierung und sollten darüber am besten auch nicht philosophieren
Ach den Schreibstil werde ich beibehalten. Hab damit bis jetzt nur Positive Erfahrung gehabt.
Das Thema ging je eh um den "richtigen" Aufbau der User-Verwaltung / -Klassen.
Ich hoffe jetzt mal das ich genügend Informationen habe um das nicht ganz zu versauen .
Sorry aber das ist die dümmste Aussage die ich bis jetzt gehört habe. Schreib mal deine 20.000 Zeilen Code innerhalb von 3 Monaten, setz dich 3 Monate an ein anderes Projekt und komm wieder hin. Einerseits sagst du er soll seinen Code schreiben wie er will, andererseits soll er es nicht so machen.
Die ungarische Notation war (und ist bei einigen großen Firmen) noch immer Gang und Gebe. Es gab damals halt noch keine genauen Möglichkeiten Bezeichnungen einzufügen, wenn es für andere verwirrend ist dann einfach nur aus einem Grund: Sie haben nicht das nötige Wissen über eine der grundlegenden Notationen in der Programmierung und sollten darüber am besten auch nicht philosophieren
Evtl. solltest du erst nach denken dann schreiben, den es macht sinn.
Er soll so schreiben wie er es mag, den ER muss den Code verstehen und wieder erkennen können.Ich sagte nicht das es ein fataler Fehler ist das er die ungarische Notation nutzt, ich sagte nur es KÖNNTE verwirrend für andere sein
Zudem wenn ich mir ein Codestyle festgelegt habe und eine Art vom Aufbau des Codes habe, kann ich den Code in 5 Jahren immer noch leicht verstehen.
Habe nicht gesagt das man ihn noch in und auswendig können muss und wissen muss das die Methode das macht und das in der Methode die Methode aufruft die XY macht.
Aber naja... das ist halt der Fluch des Internets, man hat keine Stimmlagen und kann daher viele Sachen missverstehen.
Aber sofort rumzuflamen...naja
Wenn du nicht gerade mit einem Framework arbeitest, ist es dir eigentlich frei überlassen, wie du deine Klassen strukturieren willst. Vor deinem Problem stehen Viele, die gerade mit OOP anfangen. Das Prinzip von Gettern&Settern hast du ja anscheinend verstanden. Außerdem sei noch gesagt, dass du OOP und prozedurale Programmierung "mischen" kannst. Nun zu deinen Methoden: Deine Userklasse könnte z.B. so aussehen:
PHP Code:
class User { private $db;
function __construct($connection) { $this->db = $connection; }
public function register(...) { // Daten in Datenbank eintragen }
public function login($username,$password) { // Mit Daten aus Datenbank vergleichen und ggf. die Session setzen mit z.B. der UserID }
public function hasValidLogin() { if(isset($_SESSION['user'])) { return true; } }
public function logout() { session_destroy(); unset($_SESSION['user']); return true; } }
Deine index.php könnte z.B. so aussehen
PHP Code:
<?php
$connection = new mysqli(...);
$user = new User($connection);
if ($user->hasValidLogin()) { // User weiterleiten }
es ist ihm zwar frei überlassen aber man sollte es wenn schon vernünftig machen
PHP & Klassen Login, User, Registrierung? 07/20/2014 - Web Development - 15 Replies Ahoi Matrosen,
ich mal fragen wie ihr die Bereiche Login, User, Registrierung zusammenführt / teilt.
Habt ihr 1 große Klasse wo alles drin ist oder 3 Klassen in einem Login & Logout anderem die Registrierung dann noch die 3te Klasse (User) die die Daten aus der Datenbank beschafft? :confused:
und welche Methoden würdet ihr eventuell in die verschiedene Klassen packen?
Hab leider immer nur prozedural Programmiert und könnte auch dadrin die Themen schnell runter schreiben jedoch...