OOP - Klassen Bsp.: User

02/19/2016 20:02 Masterkroko1#16
Wie oben schon erwähnt benutzte ich kein Framework. Möchte dies eig auch noch vermeiden.
02/19/2016 21:33 False#17
Fürs Exception fangen -> [Only registered and activated users can see links. Click Here To Register...]
02/19/2016 22:25 Masterkroko1#18
Quote:
Originally Posted by .ƒaℓsє. View Post
Fürs Exception fangen -> [Only registered and activated users can see links. Click Here To Register...]
Dieser wird nur dafür verwendet um beim Programmieren sofort zu merken das man ein Catch Block vergessen hat? Oder übersehe ich da was?


Bin derzeit bei meiner Methode "updatePassword"
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.
02/19/2016 22:40 False#19
Quote:
Originally Posted by Masterkroko1 View Post
Dieser wird nur dafür verwendet um beim Programmieren sofort zu merken das man ein Catch Block vergessen hat? Oder übersehe ich da was?


Bin derzeit bei meiner Methode "updatePassword"
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 ?
02/19/2016 22:55 Masterkroko1#20
Quote:
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.
02/20/2016 00:53 False#21
Quote:
Originally Posted by Masterkroko1 View Post
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 ^^
02/20/2016 12:58 Synatex#22
Quote:
Originally Posted by .ƒaℓsє. View Post
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 ;)
02/20/2016 17:11 Masterkroko1#23
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 :D.
02/20/2016 22:47 False#24
Quote:
Originally Posted by Synatex View Post
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:rolleyes:
02/22/2016 14:26 Remix v47#25
Quote:
Originally Posted by ~ JWonderpig ~ View Post
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

@TE: am besten liest du dir das generelle prinzip der objektorientierung durch: https://de.wikipedia.org/wiki/Objektorientierung