[OOP] Werden Konstruktoren vererbt?

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

  • [OOP] Werden Konstruktoren vererbt?

    Hi,

    also ich verstehe nicht wie Konstruktoren vererbt werden.

    Also ich möchte, dass in einer erbenden Klasse genau das passiert was in der vererbenden Klasse passiert.

    Sprich soll die Klasse Mypage, die von der Klasse Page (welche ein Smarty Template Object erzeugt erbt) den Konstruktor erben, da dort das Smarty Object erzeugt wird.

    Andererseits soll beim Erzeugen eines Objectes vom Typ Mypage immer ein paar Zuweisungen von Variablen erfolgen die für alle Objekte des Typs Mypage gleich sind.

    Was ist zu tun?
    Bin noch recht neu hinsichtlich OOP.

    Danke

  • #2
    Der Konstruktor der vererbenden Klasse wird dann ausgeführt, wenn die erbende Klasse keinen hat. Sonst musst du den immer extra aufrufen:
    PHP-Code:
    class zwei extends eins  {
      var 
    $wert '';

      function 
    zwei()  {
        
    parent::eins($Parameter);
        
    $this->wert 'Hallo';
      }

    Zuletzt geändert von Hopka; 10.09.2003, 13:47.
    hopka.net!

    Kommentar


    • #3
      Hi,


      Danke für Deine Antwort.

      Aber was ist wenn ich zusätzlich zu den Anweisungen des Konstruktors der vererbenden Klasse noch weitere Anweisungen in der erbenden Klasse haben möchte, die immer für Objekte der erbenden Klasse ausgeführt werden sollen?

      Gibt es dort einen Trick oder kann man Konstruktoren auch erweitern?

      Oder werden Konstruktoren der vererbenden Klasse immer ausgeführt auch wenn die erbende Klasse selber noch einen weiteren hat?


      Danke
      Zuletzt geändert von compuboy1010; 10.09.2003, 13:27.

      Kommentar


      • #4
        Original geschrieben von compuboy1010
        Oder werden Konstruktoren der vererbenden Klasse immer ausgeführt auch wenn die erbende Klasse selber noch einen weiteren hat?
        Original geschrieben von Hopka
        Der Konstruktor der vererbenden Klasse wird dann ausgeführt, wenn die erbende Klasse keinen hat. Sonst musst du den immer extra aufrufen
        also entweder drückst du dich etwas unglücklich aus oder duhast nich alles sooo gründlich gelesen oder ich bin zu doof heut, aber ich denke Hopka hat deine Frage schon beantwortet
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          nochmal etwas ausführlicher:
          PHP-Code:
          class eins  {  // vererbende Klasse
            
          var $irgendwas '';

            function 
          eins($parameter)  {  // Konstruktor der vererbenden Klasse
              
          $this->irgendwas $parameter;
            }
          }

          class 
          zwei extends eins  {  // erbende Klasse
            
          var $wert '';

            function 
          zwei()  {  //Konstruktor der erbenden Klasse
              
          parent::eins('Guten Morgen');  // ruft den Konstruktor der vererbenden Klasse auf
              
          $this->wert 'Hallo';  // irgendeine Anweisung als Konstruktor der erbenden Klasse
            
          }

          du rufst also im Konstruktor der erbenden Klasse den Konstruktor der vererbenden Klasse auf, und führst anschließend noch ein paar Anweisungen als Konstruktor der erbenden Klasse aus.
          Also erstmal den übergeordneten Konstruktor und anschließend den eigenen.
          Zuletzt geändert von Hopka; 10.09.2003, 13:48.
          hopka.net!

          Kommentar


          • #6
            [OOP]

            Hi,

            also nun habe ich es verstanden.
            Toll man kann also den Konstruktor der vererbenden Klasse wie eine normale Funktion behandeln.

            Super,

            Danke für Eure Hilfe!!!

            Vieleicht noch eine Frage, wenn die nicht zu blöd erscheint:

            Wird die vererbende Klasse immer mit $parent-> angesprochen?



            Gruß

            Compu
            Zuletzt geändert von compuboy1010; 10.09.2003, 13:52.

            Kommentar


            • #7
              Re: [OOP]

              gefährliches Halbwissen.

              http://php.net/keyword.parent

              statt $parent->usw
              muss parent::usw
              stehen.
              hopka.net!

              Kommentar


              • #8
                Hi,

                fantastisch!!!

                Vielen Dank!


                Nun habe ich es vollständig gerafft, hoffe ich.!

                Einen schönen Tag noch und Gruss ...

                Compu

                Kommentar


                • #9
                  Hi,

                  ich muss nochmals nachfragen, weil es nicht klappt.

                  Was ist denn nun, wenn die "parent-funktion" ein Konstruktor ist?
                  Ich bekomme immer einen Fehler in meinem Skript, dass die Funktion nicht gefunden werden kann.

                  Muss ich den Funktionsnamen dann gross schreiben, sprich:

                  parent:: brief();

                  oder

                  parent:: Brief();

                  ???????


                  Danke

                  Kommentar


                  • #10
                    ich würd auf jeden fall das leerzeichen bei parent:: brief(); rausmachen
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Hi,

                      habe ich gemacht.

                      Also groß oder klein geschrieben?
                      :-))

                      Danke

                      Kommentar


                      • #12
                        so wie du den konstruktur geschrieben hast, im normalfall klein


                        poste mal die fehlermeldung wenn's nicht geht
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          Habe es groß geschrieben.

                          Nun geht es, danke!

                          Gruss Compu

                          Kommentar

                          Lädt...
                          X