Neuling: OOP - Klonen - frage zu that->

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

  • Neuling: OOP - Klonen - frage zu that->

    Hallo zusammen,

    bin php neuling, hab die tage recht viel bei euch gelesen und hoffe
    sämtliche posting-regeln nun zu beachten. ich arbeite grade mit einem
    "einsteiger" buch und bin nun zu einem problem gekommen, für das
    ich trotz stunden von suchen im internet keine lösung gefunden habe.
    das suchwort ist auch sehr unglücklich ausgefallen " that " und " this "
    und ich weiss einfach net mehr weiter : /

    Es geht um OOP - Klonen. und der codeteil sieht so aus:

    PHP-Code:
    <?php error_reporting(E_ALL);

    ...

            public function 
    __clone()
            { 
    // Zeile 32
                //$that = 0;
                
    $this->geschwindigkeit $that->geschwindigkeit 10;
                
    $this->farbe "grün";
            } 
    // Zeile 36

    ...

    ?>
    Fehlermeldung sieht so aus:
    Notice: Undefined variable: that in E:\XAMPP\xampp\htdocs\uebungphp5\ue\ue06.php on line 34
    Notice: Trying to get property of non-object in E:\XAMPP\xampp\htdocs\uebungphp5\ue\ue06.php on line 34
    ich hab, wie oben zu sehen, $that = 0; eingefügt um die erste
    fehlermeldung weg zu bekommen. dann dachte ich, das "that" vielleicht
    ein tip-fehler im buch wäre und hab "that->" in "this->" geändert und das
    script ist ohne fehler gelaufen und hat das gemacht, was es sollte.

    dann steht aber im buch:
    "Eine solche Übernhame gelingt mit "$that". Dies ist die Bezeichnung für
    >>jenes Objekt<<, analog zu >>dieses Objekt<<, das über $this
    angesprochen werden kann.

    also, kein tip-fehler, es soll "that" heissen, dann bin ich auf php.net in die
    doku und hab unter "Klassen und Objekte - Manual" nach der "richtigen"
    anwendung von diesem "this->" und "that=>" gesucht, aber kein beispiel
    gefunden.

    ich könnte natürlich einfach that in this ändern, dann läuft es, aber irgend
    ein sinn muss das that ja haben. schliesslich will ich ja verstehen was ich da
    mache. über google und co bekomme ich beim suchbegriff "that" usw natürlich
    weit mehr info, als nützlich ist ... ich hab keine ahnung wo ich noch
    nach einer antwort suchen soll.

    hat vielleicht einer ne idee wo bzw WIE ich die info zur klarstellung finde
    oder ist gar einer dabei, der mir das hier kurz erklären könnte?

    wäre für hilfestellung echt dankbar

    Viele Grüße
    Sascha
    Zuletzt geändert von Sascha_78; 04.03.2007, 20:17.
    Ich würde ja gern mehr Fragen stellen, aber 99% Beantworten sich allein durch Suchen

  • #2
    http://de3.php.net/manual/en/language.oop5.cloning.php

    Es wird in der neu geklonten Klasse auch __clone aufgerufen, d.h. du kannst dann da rumdoktorn mit $this

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      danke für die schnelle antwort.

      was mich noch interessieren würde, gibt es denn fälle bei denen man dieses "that->" braucht? oder kann man immer mit "this->" arbeiten?
      Ich würde ja gern mehr Fragen stellen, aber 99% Beantworten sich allein durch Suchen

      Kommentar


      • #4
        Lass dich mal von dem "that" nicht verwirren. Es ist nur eine unglückliche Bezeichnung für "das andere Objekt".
        Beim Klonen redet man ja immer von zwei Objekte, der Vorlage und der Kopie. Vielleicht hilft es deiner Vorstellung, wenn ich sage, du könntest einen Bleistift nehmen und statt $that überall $vorlage hinschreiben ...
        $that ist wirklich ein x-beliebiger Variablenname.

        Bei $this ist das anders. $this ist eine Referenz auf das Objekt, in dessen Kontext es verwendet wird. Der Name ist festgelegt. Siehe http://de3.php.net/manual/en/language.oop5.basic.php
        Zuletzt geändert von onemorenerd; 05.03.2007, 00:34.

        Kommentar


        • #5
          @ onemorenerd

          super danke, genau das war es, was ich nicht verstanden hab. ich dachte, das in diesem fall (also beim geklontem objekt) $that-> genau so ein festgelegter name sei.

          Viele Grüße
          Sascha
          Ich würde ja gern mehr Fragen stellen, aber 99% Beantworten sich allein durch Suchen

          Kommentar

          Lädt...
          X