Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] OOP - Stil-Frage zur Objekterzeugung

Einklappen

Neue Werbung 2019

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

  • [Erledigt] OOP - Stil-Frage zur Objekterzeugung

    Guten Abend,

    ich habe gerade angefangen mich mit der OOP in PHP auseinanderzusetzen. Das Thema OOP ist mir schon dank Java ganz gut vertraut. Daher habe ich mal eine Stilfrage:

    Wenn ich eine Objekt von einem Typ erzeuge und ihm bei der Erzeugung Werte übergebe: Ist es dann stilistisch besser die Werte direkt im Konstruktor zu setzen oder sollte der Konstruktor doch lieber die entsprechenden Setter für die diversen Attribute aufrufen?

    Ich weiß, dass es "nur" eine Kleinigkeit ist, aber es wurmt mich gerade, da ich in einigen Tutorials und meinem Buch unterschiedliche Varianten gesehen habe.

    Beste Grüße,

    Der Baltasar

  • #2
    Wenn du nur den Wert zuweisen möchtest, warum solltest du das an eine setter-Methode delegieren?
    Es sei denn, der Wert soll vor dem setzen noch validiert werden o.ä., dann macht es eher Sinn, dies einer eigenen Methode zu überlassen.
    [URL]http://hallophp.de[/URL]

    Kommentar


    • #3
      So habe ich es mir auch gedacht und war auch etwas verdutzt, als ich die Variante (ohne Wert-Überprüfung) mit der Setter gesehen hatte. Danke für die schnelle Antwort

      Kommentar


      • #4
        Wenn du die setter-Methode nicht brauchst oder nicht haben moechtest (weil der Wert sich nicht aendern darf) dann setz den Wert direkt. Wenn es die setter-Methode aber gibt und sie mehr macht, als nur Typehinting (den hast du im Konstruktor ja auch), dann setz sie auch ueber die setter-Methode! Das waere zumindest konsequent.
        "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

        Kommentar


        • #5
          Ein paar Argumente:

          - einige Singletonvarianten (vor allem generische) erlauben keine Konstruktor-Parameter
          - atomare Operationen auf mehrere Parameter solltest Du ohnehin in Methoden auslagern. Die können dann sowaohl vom Konstruktor oder Setter aufgerufen werden.
          - keinen Setter anlegen, wenn kein Zugriff auf diese Daten erfolgen soll oder das keinen Sinn macht (Username einer DB-Verbindung)
          - Setter anlegen, wenn Attribute zur Laufzeit neu gesetzt werden können sollen. Optional diese im Konstruktor als optionale Parameter (mit Default-Werten) ebenfalls angeben.
          - Auf jeden Fall sind Setter fast immer besser als Direktzugriff auf Objektmember. Außer vielleicht für reine Storage Container.
          [COLOR="#F5F5FF"]--[/COLOR]
          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
          [COLOR="#F5F5FF"]
          --[/COLOR]

          Kommentar


          • #6
            Zitat von nikosch Beitrag anzeigen
            [...]
            - Auf jeden Fall sind Setter fast immer besser als Direktzugriff auf Objektmember. Außer vielleicht für reine Storage Container.[...]
            Macht den Code meiner Meinung nach auch lesbarer. Bzw. man hindert Programmierer, wenn das Muster konsequent durchgesetzt wird, an unsinnigem überschreiben von Eigenschaften...

            Kommentar


            • #7
              Auf jeden Fall sind Setter fast immer besser als Direktzugriff auf Objektmember. Außer vielleicht für reine Storage Container.
              Also ich bin schön brav am kapseln. Alles andere wäre mir zu riskant

              Vielen dank für die Antworten. Wie gesagt: Das meiste ist mir schon aus Java bekannt. Jetzt geht es eben darum dass nach PHP zu übertragen

              Kommentar


              • #8
                Zitat von Baltasar Beitrag anzeigen
                Alles andere wäre mir zu riskant
                Inwiefern riskant? Hast du in deinen Setter-Methoden Validierungen drin (regex, o.ä.)?
                [I]Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)[/I]
                [I]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/I]

                Kommentar

                Lädt...
                X