Vincent: OOP Frage

Hallo

ich habe eine Klasse:
$klasse1 = new klasse1;

In der definiere ich die klasse2:
$this->klasse2 = new klasse2;

Ich greife dann auf die klasse2 so zu:
$klasse1->klasse2->function_xyz();

Jetzt möchte ich in der klass2 auf eine variable der $klasse1 zugreifen.
Wie kann ich das tun?

  1. z.B. als Referenz übergeben.

    Hallo

    ich habe eine Klasse:
    $klasse1 = new klasse1;

    In der definiere ich die klasse2:
    $this->klasse2 = new klasse2;

    Ich greife dann auf die klasse2 so zu:
    $klasse1->klasse2->function_xyz();

    Jetzt möchte ich in der klass2 auf eine variable der $klasse1 zugreifen.
    Wie kann ich das tun?

    1. z.B. als Referenz übergeben.

      Wie mache ich das?

      1. z.B. als Referenz übergeben.
        Wie mache ich das?

        Indem du der $variable ein & voranstellst, also &$variable. Ggf. auch im Funktionsparameter, musst du ausprobieren. Gibt aber auch andere Wege (z.B. Funktionsaufruf), was halt am besten für den Zweck geeignet ist...

  2. echo $begrüßung;

    ich habe eine Klasse:
    $klasse1 = new klasse1;

    Nun hast du ein Objekt einer Klasse.

    In der definiere ich die klasse2:
    $this->klasse2 = new klasse2;

    Nein, du legst ein Objekt einer anderen Klasse als Eigenschaft des ersten Objekts an.

    Ich greife dann auf die klasse2 so zu:
    $klasse1->klasse2->function_xyz();

    "Das" klasse2, denn es ist ein Objekt, keine Klasse.

    (Ja, ich bin pingelig. Es ist deutlich einfacher und unmissverständlicher bei der Kommunikation, wenn man die Dinge beim richtigen Namen nennt.)

    Jetzt möchte ich in der klass2 auf eine variable der $klasse1 zugreifen.
    Wie kann ich das tun?

    In welcher Variable (Objekt-Eigenschaften und Array-Elemente mit einbezogen) ein Objekt oder ein beliebiger anderer Wert gehalten wird, ist vom Objekt oder dem Wert aus nicht nachvollziehbar. Mittels Referenzen kann es durchaus mehrere Verweise auf das selben Wert geben. Wer ist nun der Besitzer? Dir bleibt nichts weiter übrig, als bei der Instantiierung oder zu einem anderen günstigen Zeitpunkt, dem Objekt klasse2 den Besitzer mitzuteilen. klasse2 muss sich diesen dann geeignet merken.

    Explizite Referenzierung ist unter PHP5 für Objekte nicht mehr notwendig. Objekte werden immer per Referenz übergeben, solange sie nicht per clone kopiert werden.

    echo "$verabschiedung $name";