Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu Klassen und Objekten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Frage zu Klassen und Objekten

    Hallo,

    ich habe eine Frage:
    Ich habe ein Loginsystem. Jetzt ahbe ich ein Objekt OtherUser erstellt (funktioniert auch super)
    Ich kann jetzt einfach
    PHP-Code:
    $peter = new OtherUser;
    $peter->uid 1;
    echo 
    $peter->GetUsername(); 
    Jetzt habe ich eine User Klasse.
    Diese Klasse ist von dem momentan eiongeloggten User.
    Kann ich das irgendwie machen, dass ich in der Klasse User das Objekt OtherUser erstellen kann?
    also, dass ich
    PHP-Code:
    echo User::GetUsername(); 
    machen kann.

    Ich habe schon versucht in die Userklasse folgendes reinzuschreiben:
    PHP-Code:
    $peter = new OtherUser;
    $peter->uid $_SESSION['uid']; 
    Aber das geht nicht

    Danke schon mal

  • #2
    Warum hast du zwei Userklassen?

    Eine reicht doch vollkommen aus weil jeder User doch prinzipiel das gleiche "kann".

    PHP-Code:
    $peter = new OtherUser;
    $peter->uid $_SESSION['uid']; 
    "Geht nicht" ist keine sinnvolle Fehlerbeschreibung. Was steht dnen in $_SESSION['uid'] drin?

    Hat die Klasse User auch die Membervariable uid? Wenn ja sollte im Konstruktor der User Klasse folgendes funktionieren:

    PHP-Code:
    $uo = new OtherUser;
    $uo->uid $this->uid
    Sofern die uid im Konstruktor gesetzt wird.

    PHP-Code:
    echo User::GetUsername(); 
    Ist auch Banane weil das ein statischer Aufruf wäre womit kein Zugriff auf $this möglich ist.

    Dein ganzes Konzept erscheint mir sehr fragwürdig.
    "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

    Kommentar


    • #3
      Was genau willst du denn machen?
      wenn ich das richtig sehe:
      Du brauchst nicht eine Klasse OtherUser, sondern nur User, die identisch ist zum derzeit eingeloggten User. Die Objekete existieren ja nur bei jedem Scriptaufruf und werden am Ende gelöscht. Es sei denn du speicherst diese in der DB, was ich aber nicht machen würde.
      "My software never has bugs, it just develops random features."
      "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

      Kommentar


      • #4
        Also ich mache gerade ein Browsergame und da kann ich dann durch das OtherUser objekt einfach z.B. bei den News, wo ich nur die uid in der db speichere dies machen:
        PHP-Code:
        $author = new OtherUser;
        $author->uid $news['uid'];
        echo 
        $author->GetUsername(); 
        So jetzt brauch ich eine extra Klasse für den eingeloggten User. Der braucht nähmlich auch extra funktionen und soll auhc nur eine Klasse und kein Objekt sein.
        Trotzem sollen die funktionen von dem OtherUser Objekt in der Klasse sein, sodass ich einfach
        PHP-Code:
        echo User::GetUsername(); 
        machen kann.

        Also wie ich das jetzt verstanden habe kann cih das Objekt im Konstruktur erzeugen?

        Kommentar


        • #5
          Zitat von luks2com Beitrag anzeigen
          Also wie ich das jetzt verstanden habe kann cih das Objekt im Konstruktur erzeugen?
          Da die Klasse für den eingeloggten User ausschließlich statische Methoden enthalten soll: nein.

          Ansonsten wäre wohl Vererbung hier das Stichwort oder zumindest ein Singleton.

          Aber was ich nach wie vor nicht verstehe... was unterscheidet den eingeloggten User von einem anderem?
          "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

          Kommentar


          • #6
            function wie z.B. isLoggedin, oder ganz viele funktionen, die zum Browsergame gheören.
            Wie kann cihd as denn etzt umsetzen?

            Kommentar


            • #7
              Zitat von luks2com Beitrag anzeigen
              function wie z.B. isLoggedin, oder ganz viele funktionen, die zum Browsergame gheören.
              Wie kann cihd as denn etzt umsetzen?
              indem du einfach eine Klasse nimmst?

              Denk mal z.B. an eine Freundesliste... das werden dann alles OtherUser Objekte ohne isLoggedIn Funktion für einen Onlinestatus?

              Oder wenn du z.B. addItem und removeItem Methoden hast für den eingeloggten User aber nicht in OtherUser und eine Möglichkeit schaffen willst das 2 User miteinander handeln können?

              Du brauchst nur eine Klasse.
              "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

              Kommentar


              • #8
                Ich würde das so machen, wie Dark Guardian das vorgeschlagen hat.
                Du machst dir eine Klasse OtherUser wie du die jetzt schon hast. Und lässt die Klasse User davon erben. Lässt sich das nur nicht mehr statisch machen, aber du kannst ja mit Singleton arbeiten: PHP: Patterns - Manual
                Dadurch existiert immer nur ein Objekt der Klasse, dürfte ja das richtige für dich sein.

                Gruß

                Kommentar


                • #9
                  Zitat von luks2com Beitrag anzeigen
                  function wie z.B. isLoggedin, oder ganz viele funktionen, die zum Browsergame gheören.
                  Wie kann cihd as denn etzt umsetzen?
                  naja eigentlich finde ich das unnötig ein nicht eingeloggter Benutzer ist immer noch ein Benutzer (User). Daher sollte er auch die selbe Klasse haben. Die Funktion isLoggedIn sollte in diesem fall dann einfach false zurückliefern.
                  Die Unterscheidung zwischen eingeloggten und nicht eingeloggten Benutzern gehört nicht rein finde ich.
                  "My software never has bugs, it just develops random features."
                  "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                  Kommentar

                  Lädt...
                  X