dr.colossos: Klassenname bei Klassen-Member angeben?

Hi,

kann ich irgendwie bei der Klassendefinition von PHP-Klassen den komplexen Typ von Klassenmembern angeben?

Also sowas in der Art:

  
class ClassB  
{  
 protected $memberOne = ClassA a;  
 protected $memberTwo = ClassC c;  
...  
}  

Ja, so geht's nicht, und ich wuesste auch nicht wie's sonst ginge, aber mehr lernt nie aus, evtl. gibt's ja was ...

Im Moment mach ich das so ...

...
protected $memberOne = '_ClassA_';
...

Wenig huebsch, aber funktioniert fuer meinen Zweck.

Es geht darum, member-Variablen dynamisch initialisieren zu koennen, da bietet sich bei meinem Einsatz an.

Vielen Dank fuer bessere Ideen!

  1. echo $begrüßung;

    kann ich irgendwie bei der Klassendefinition von PHP-Klassen den komplexen Typ von Klassenmembern angeben?

    PHP ist zwar nicht typenlos, aber Typen für Variablen können explizit nur beim Type Hinting verwendet werden.

    Im Moment mach ich das so ...
    protected $memberOne = '_ClassA_';
    Es geht darum, member-Variablen dynamisch initialisieren zu koennen, da bietet sich bei meinem Einsatz an.

    Daraus wird mir nicht klar, wie du da weiter vorgehst. So etwa?

    if ($this->memberOne == '_ClassA_')
        $this->memberOne = new ClassA;

    Außerdem ist mir zu wenig Hintergrundwissen zu deinem Wunsch bekannt, so dass ich den Sinn und das Ziel nicht erkennen kann. "Dynamisch" ist ein wenig spezifisches Wort, das alles und nichts bedeuten kann.

    echo "$verabschiedung $name";

    1. Hi,

      Daraus wird mir nicht klar, wie du da weiter vorgehst. So etwa?

      if ($this->memberOne == '_ClassA_')
          $this->memberOne = new ClassA;

      Jo, aber ich hab natuerlich nicht nur eine Member-Variable, sondern mehrere, die ich so dann in einer Schleife via Parameter initialisiere.

      Das is sicher nicht huebsch, aber es bringt speziell in diesem Fall ein paar nette Vorteile (es wuerde zu weit fuehren diese zu nennen, da muesst ich ausholen).

      TypeHinting kenn ich natuerlich, aber das bringt mir da halt leider garnix.

      Danke!