Typecast auf Objekte

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

  • Typecast auf Objekte

    Bin ich zu dackelich oder warum funktionieren Typecasts auf Objekte nicht?
    PHP-Code:
    <?php
    class Hallo {
        function 
    halloWieGehts() {
            echo 
    "Hallo";
        }
    }

    class 
    HalloDu extends Hallo {
        function 
    halloWieGehts() {
            echo 
    "HalloDu";
        }
    }

    $hallo = new Hallo();
    $hallo = (HalloDu)$hallo;
    $hallo->halloWieGehts();
    ?>

    Parse error: parse error, unexpected T_VARIABLE in C:\apache\xampp\htdocs\test.php on line 15
    Hab's jetz zwar in meiner Anwenung umschrieben mit z.B.
    $hallo = new HalloDu($hallo); // hab im Konstruktor dann die Objektvariablen mit $this->xxx = $hallo->getXX(); aber des ist doch net wirklich schön?
    Ich könnte zwar in diesem konkreten Fall bei mir einen Typecast verhindern aber so finde ich es nicht sehr stielrein? (Hab einen ObjektTypecast noch nie gebraucht aber in diesem Fall wäre es schöner mit Typecast!)

    MfG Markus

  • #2
    PHP-Code:
    <?php
    class Hallo {
        function 
    halloWieGehts() {
            echo 
    "Hallo";
        }
    }

    class 
    HalloDu extends Hallo {
        function 
    halloWieGehts() {
            echo 
    "HalloDu";
        }

        function 
    parent_halloWieGehts() {
            
    parent::halloWieGehts();
        }

    }

    $hallo = new HalloDu();
    $hallo->halloWieGehts();
    $hallo->parent_halloWieGehts();
    ?>
    so geht's

    du könntest auch direkt HalloDu::halloWieGehts(); aufrufen, da du ja nicht mit Klassenvariablen arbeitest
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Des ist aber auch nicht der Sinn von Typecasts bzw. ist des ja gar keiner. Objekte müssten doch zu ihren abgeleiteten Objekte komplett kompatibel sein sonst wäre ja die Hälfte der Vorzuüge von extends verloren gegangen!

      Trotzdem danke für den Post.

      MfG Markus

      Kommentar


      • #4
        Also typecast auf Objekte gibt es, wenn's auch ein wenig extravagant ist und nicht der üblichen Schreibweise entspricht. (Soviel ich weiss allerdings nur in PHP5)
        Anscheinend gibt es einen Standardkonstruktor in PHP5 der nicht überschrieben werden kann und vor dem normalen Konstruktor aufgerufen wird.
        PHP-Code:
        <?php
        class Hallo {
            function 
        halloWieGehts() {
                echo 
        "Hallo";
            }
        }

        class 
        HalloDu extends Hallo {

            function 
        __construct() {
                echo 
        "TachAuch<br>";
            }

            function 
        halloWieGehts() {
                echo 
        "HalloDu";
            }
        }

        $hallo = new Hallo();
        $hallo = new HalloDu($hallo);
        $hallo->halloWieGehts();
        ?>

        Ausgabe:
        TachAuch
        HalloDu

        Kommentar


        • #5
          wollen wir wetten, dass
          PHP-Code:
          $hallo = new Hallo();
          $hallo = new HalloDu();
          $hallo->halloWieGehts(); 
          auch funktioniert?
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            OffTopic:
            ich verstehe nicht was er damit eigentlich will

            Kommentar


            • #7
              Ups vertan!

              Ich will, dass die Objektvariablen die in Hallo gespeichert sind dann automatisch in HalloDu zur verfügung stehen wenn man einen "Typecast" zu HalloDu macht. Geht aber anscheinend nicht.

              MfG Markus

              Kommentar

              Lädt...
              X