Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.php > #4910 > unrolled thread

Referenz auf "Eltern"-Klasseninstanz

Started bySebastian Suchanek <sebastian.suchanek@gmx.de>
First post2023-07-01 21:27 +0200
Last post2023-07-03 15:48 +0200
Articles 5 — 3 participants

Back to article view | Back to de.comp.lang.php


Contents

  Referenz auf "Eltern"-Klasseninstanz Sebastian Suchanek <sebastian.suchanek@gmx.de> - 2023-07-01 21:27 +0200
    Re: Referenz auf "Eltern"-Klasseninstanz Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2023-07-01 20:09 +0000
    Re: Referenz auf "Eltern"-Klasseninstanz Arno Welzel <usenet@arnowelzel.de> - 2023-07-03 02:35 +0200
      Re: Referenz auf "Eltern"-Klasseninstanz Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2023-07-03 07:23 +0000
        Re: Referenz auf "Eltern"-Klasseninstanz Arno Welzel <usenet@arnowelzel.de> - 2023-07-03 15:48 +0200

#4910 — Referenz auf "Eltern"-Klasseninstanz

FromSebastian Suchanek <sebastian.suchanek@gmx.de>
Date2023-07-01 21:27 +0200
SubjectReferenz auf "Eltern"-Klasseninstanz
Message-ID<u7q5nh.tcg.1@msgid.suchanek.de>
Hallo NG!

Gegeben sei folgende - stark vereinfachte - Konstellation:

---------------------------- 8< ----------------------------

<?php
  class ClassA {
    [...]
  }

  class ClassB {
    public function construct__ () {
      $this->myClassA = new ClassA();
    }
  }

  $myClassB = new ClassB();
?>

---------------------------- 8< ----------------------------

Kann ich halbwegs elegant von der Instanz "myClassA" aus 
irgendwie Methoden der "Eltern"-Instanz "myClassB" 
(nicht der Klasse "ClassB"!) aufrufen? (Und wenn ja, wie?) Oder 
muss ich mir hier irgendwelche Pointer- bzw. Handler-Konstrukte 
basteln, die ich beim Aufrufen des Konstruktors von ClassA 
übergeben und dann in einer Variable von ClassA bzw. myClassA 
speichern muss?


TIA,

Sebastian

[toc] | [next] | [standalone]


#4911

FromStefan+Usenet@Froehlich.Priv.at (Stefan Froehlich)
Date2023-07-01 20:09 +0000
Message-ID<ft64a08716i165f30n3e8%sfroehli@Froehlich.Priv.at>
In reply to#4910
On Sat, 01 Jul 2023 21:27:13 Sebastian Suchanek wrote:
> ---------------------------- 8< ----------------------------
> 
> <?php
>   class ClassA {
>     [...]
>   }
> 
>   class ClassB {
>     public function construct__ () {
>       $this->myClassA = new ClassA();
>     }
>   }
> 
>   $myClassB = new ClassB();
> ?>
> 
> ---------------------------- 8< ----------------------------
> 
> Kann ich halbwegs elegant von der Instanz "myClassA" aus 
> irgendwie Methoden der "Eltern"-Instanz "myClassB" 
> (nicht der Klasse "ClassB"!) aufrufen?

Nein, natürlich nicht. myClassA könnte ja auch in myClassC oder
völlig eigenständig verwendet werden - von innerhalb des Objekt ist
das nicht feststellbar.

> Oder muss ich mir hier irgendwelche Pointer- bzw.
> Handler-Konstrukte basteln, die ich beim Aufrufen des Konstruktors
> von ClassA übergeben und dann in einer Variable von ClassA bzw.
> myClassA speichern muss?

Das wäre eine Möglichkeit.

Alternativ böte sich auch noch an, das Objektmodell auf seine
Eignung für den gegebenen Sachverhalt zu überprüfen. Ohne nähere
Informationen maße ich mir da kein Urteil an, aber es besteht
zumindestens ein Anfangsverdacht, dass sich das auch schöner lösen
lassen sollte.

Servus,
   Stefan

-- 
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Stefan. Für neue Eumel in wichtigen Welten!
(Sloganizer)

[toc] | [prev] | [next] | [standalone]


#4912

FromArno Welzel <usenet@arnowelzel.de>
Date2023-07-03 02:35 +0200
Message-ID<kgejeeFtajvU3@mid.individual.net>
In reply to#4910
Sebastian Suchanek, 2023-07-01 21:27:

> Gegeben sei folgende - stark vereinfachte - Konstellation:
> 
> ---------------------------- 8< ----------------------------
> 
> <?php
>   class ClassA {
>     [...]
>   }
> 
>   class ClassB {
>     public function construct__ () {
>       $this->myClassA = new ClassA();
>     }
>   }
> 
>   $myClassB = new ClassB();
> ?>
> 
> ---------------------------- 8< ----------------------------
> 
> Kann ich halbwegs elegant von der Instanz "myClassA" aus 
> irgendwie Methoden der "Eltern"-Instanz "myClassB" 

Das ist *keine* "Eltern"-Instanz! ClassA wird einfach nur als *Member*
von ClassB erzeugt.

Wenn Du ClassA als "Eltern"-Instanz haben willst, wäre das sowas:

class ClassA
{
}

class ClassB extends ClassA
{
}

Siehe auch:

<https://www.php.net/manual/de/language.oop5.inheritance.php>

> (nicht der Klasse "ClassB"!) aufrufen? (Und wenn ja, wie?) Oder 
> muss ich mir hier irgendwelche Pointer- bzw. Handler-Konstrukte 
> basteln, die ich beim Aufrufen des Konstruktors von ClassA 
> übergeben und dann in einer Variable von ClassA bzw. myClassA 
> speichern muss?

Es sind keine "Pointer-Konstrukte" sondern einfach nur die übliche
Schreibweise, wenn man auf Member zugreift:

$this->myClassA->methodeVonClassA();


-- 
Arno Welzel
https://arnowelzel.de

[toc] | [prev] | [next] | [standalone]


#4913

FromStefan+Usenet@Froehlich.Priv.at (Stefan Froehlich)
Date2023-07-03 07:23 +0000
Message-ID<9t64a27728i1adb16n3e8%sfroehli@Froehlich.Priv.at>
In reply to#4912
On Mon, 03 Jul 2023 02:35:26 Arno Welzel wrote:
> Sebastian Suchanek, 2023-07-01 21:27:
>> Gegeben sei folgende - stark vereinfachte - Konstellation:
>> 
>> ---------------------------- 8< ----------------------------
>> 
>> <?php
>>   class ClassA {
>>     [...]
>>   }
>> 
>>   class ClassB {
>>     public function construct__ () {
>>       $this->myClassA = new ClassA();
>>     }
>>   }
>> 
>>   $myClassB = new ClassB();
>> ?>
>> 
>> ---------------------------- 8< ----------------------------
>> 
>> Kann ich halbwegs elegant von der Instanz "myClassA" aus 
>> irgendwie Methoden der "Eltern"-Instanz "myClassB" 
> 
> Das ist *keine* "Eltern"-Instanz! ClassA wird einfach nur als *Member*
> von ClassB erzeugt.
> 
> Wenn Du ClassA als "Eltern"-Instanz haben willst, wäre das sowas:
> 
> class ClassA
> {
> }
> 
> class ClassB extends ClassA
> {
> }

Auch das wäre keine Eltern*instanz*, sondern eine Eltern*klasse*.

Sebastian möchte offensichtlich aus einem Objekt B heraus auf das
Objekt A zugreifen, in dem B als Instanzvariable enthalten ist. Man
könnte A schon mit Bauchweh als "Elterninstanz" bezeichnen, bloß tut
das keiner, weil sie für B (aus gutem Grund) nicht sichtbar ist.

Servus,
   Stefan

-- 
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Spaß mit Stefan, standhaft und scheu!
(Sloganizer)

[toc] | [prev] | [next] | [standalone]


#4914

FromArno Welzel <usenet@arnowelzel.de>
Date2023-07-03 15:48 +0200
Message-ID<kgg1tkF5mehU3@mid.individual.net>
In reply to#4913
Stefan Froehlich, 2023-07-03 09:23:

> On Mon, 03 Jul 2023 02:35:26 Arno Welzel wrote:
>> Sebastian Suchanek, 2023-07-01 21:27:
>>> Gegeben sei folgende - stark vereinfachte - Konstellation:
>>>
>>> ---------------------------- 8< ----------------------------
>>>
>>> <?php
>>>   class ClassA {
>>>     [...]
>>>   }
>>>
>>>   class ClassB {
>>>     public function construct__ () {
>>>       $this->myClassA = new ClassA();
>>>     }
>>>   }
>>>
>>>   $myClassB = new ClassB();
>>> ?>
>>>
>>> ---------------------------- 8< ----------------------------
>>>
>>> Kann ich halbwegs elegant von der Instanz "myClassA" aus 
>>> irgendwie Methoden der "Eltern"-Instanz "myClassB" 
>>
>> Das ist *keine* "Eltern"-Instanz! ClassA wird einfach nur als *Member*
>> von ClassB erzeugt.
>>
>> Wenn Du ClassA als "Eltern"-Instanz haben willst, wäre das sowas:
>>
>> class ClassA
>> {
>> }
>>
>> class ClassB extends ClassA
>> {
>> }
> 
> Auch das wäre keine Eltern*instanz*, sondern eine Eltern*klasse*.

Ja, weil es nur sowas gibt. Eine Instanz kann nicht ein "Kind" haben,
sondern nur Member.

> Sebastian möchte offensichtlich aus einem Objekt B heraus auf das
> Objekt A zugreifen, in dem B als Instanzvariable enthalten ist. Man
> könnte A schon mit Bauchweh als "Elterninstanz" bezeichnen, bloß tut
> das keiner, weil sie für B (aus gutem Grund) nicht sichtbar ist.

Eben.

-- 
Arno Welzel
https://arnowelzel.de

[toc] | [prev] | [standalone]


Back to top | Article view | de.comp.lang.php


csiph-web