OOP: Warum Eigenschaften per Methode ändern?

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

  • OOP: Warum Eigenschaften per Methode ändern?

    Hallo,
    es wird ja gesagt, dass Eigenschaften von Objekten in der OOP per Methode manipuliert werden sollen, richtig?
    Doch gibt es einen Grund dafür?
    Ich habe "video2brain PHP5.1", dort wird gesagt, dass es "der professionelle Stil" ist.

    Kann mir jemand den Grund dafür nennen?

    Ich sehe nämlich keinen Unterschied zwischen

    $objekt->eigenschaft = 5;

    und

    function set_eigenschaft($wert) {
    self->eigenschaft = $wert;
    }

    $objekt->set_eigenschaft(5);

    ..

    Danke schonmal!

    Johannes

  • #2
    Wenn aber eigenschaft nur zahlen zwischen 1 und 100 haben darf, irgend ein trottel aber auf die idee kommt, eine 1.000 da rein zu schreiben, krasht es dir u.u. das ganze Programm.

    Die setEigenschaft() Methode würde die 1000 aber nicht zulassen und false zurück geben.

    desweiteren könnte es möglich sein, dass die variable in der klasse irgendwann nicht mehr gebraucht wird oder das ganze in der session oder sonstr wo gespeichert wird. dann ist es nur eine einzige änderun in der klasse und nicht 100te im code.

    Übvrigens, wenn du allen ernstes drüber nachdenkst
    $objekt->eigenschaft = 5; zu verwenden. Warum hast du dann jemals klassen in betracht gezogen? Ist doch viel mehr Schreibkram.

    Kommentar


    • #3
      Um solche direktzugriffe auf Member zu erlauben, die überprüfung dennoch zu erhalten, kannst du die Methoden __set( $var, $value ) und __get( $var ) nutzen!
      Die entsprechenden Member musst du dann natürlich privat setzen, also folgendes:
      PHP-Code:
      class Clas************ample {
        private 
      $var;
        function 
      __get$v ) {
          return 
      $this->var;
        }
        function 
      __set$v$val ) {
          return 
      $this->var $val;
        }
      };
      $v = new Clas************ample;
      $v->abc 'foo'

      Kommentar


      • #4
        Diese Magie gibt es aber nur in PHP und sogar da erst ab Version 5. Ist also eine Abweichung von der üblichen OO-Praxis und als solche nicht zu empfehlen. Man stelle sich vor, man kann erstmal nur Java und soll sich jetzt in ein Stück oo-PHP einlesen ...

        Kommentar


        • #5
          In C# gibts dafür Properties, es ist kein PHP-only Feature. Auch wenn Properties etwas anders funktionieren.

          Kommentar


          • #6
            Meinetwegen. Weder Java noch irgendeine andere mir bekannte Sprache ist frei von jeglicher Magie. Das macht eine Sprache sicherlich komfortabler, einfacher und/oder mächtiger.
            Aber würde sich die OO-Theorie aus den Programmiersprachen ableiten, wäre sie nur der kleinste gemeinsame Nenner. Sprachgebundene Features können nicht Teil eines allgemeinen Konzepts sein.
            Natürlich ist es genau anders herum - OO wird nicht aus Sprachen abgeleitet sondern Sprachentwickler implementieren OO. Das heißt es gibt ein allgemeines Verständnis von OO-Programmierung und zig Interpretationen davon in Form von Programmiersprachen. "Der professionelle Weg" aus Sicht des abstrakten OO-Programmiers (das ist einer, der die Theorie kennt, aber keine Programmiersprache kann) ist also der über Getter und Setter. Denn die haben ihre Berechtigung, wie Tobiaz oben bereits dargestellt hat. Deshalb sind sie Teil des allgemeinen Konzepts "OOP" und deshalb können sie in eigentlich allen OO-Sprachen umgesetzt werden.
            Die Sprache mag außerdem noch irgendwelche magischen Tricks oder direkten Zugriff auf die Properties anbieten, die dem erfahrenen Programmierer auch völlig intuitiv erscheinen. Aber eben nur dem.

            Kommentar

            Lädt...
            X