Klassenattribut ein Objekt der anderen Klasse?

crazy_chicken

Erfahrenes Mitglied
Hallo Zusammen,

warum klappt das nicht mit php:

PHP:
class Element{
    var $inhalt; 
    var $nextElement = Element;
    var $prevElemnt  = Element;
    
    
    function __construct($inhalt){
        $this->inhalt=$inhalt;
    }
    
    
    
}

class Liste{
    
    var $head = new Element('inhalt'); //Fehler,eldung, wieso?
    
    function __construct(){
        
    }

    function insert(Element newOne){ // Auch Fehlermeldung
        
    }
    
}

Danke schon mal.
 
Zuletzt bearbeitet:
So klappt es
PHP:
class Liste{
    
    var $head; //Fehler,eldung, wieso?
    
    function __construct(){
        $this->head = new Element("aaa");
    }
    
}
, aber so wie oben nicht möglich mit php?
 
In meiner Signatur findest du einen Link zu funktionierenden Stacks und Queues. Da kannst du dir was für Listen abschauen.

Zu deinem Problem:
PHP:
class Element{
    var $inhalt; 
    var $nextElement = Element; // Was soll das denn sein? Element müsste hier eine Konstante sein
    var $prevElemnt  = Element;
    
    
    function __construct($inhalt){
        $this->inhalt=$inhalt;
    }
    
    
    
}

class Liste{
    // erstmal, var würde ich nicht nehmen, lieber public, private oder protected
    // im Fall der Liste am ehesten protected
    // soweit ich weiß können Objekteigenschaften nicht mit komplexen Werten wie Objekten
    // initialisiert werden (dafür ist schließlich auch der Konstruktor da)
    var $head = new Element('inhalt'); //Fehler,eldung, wieso?
    
    function __construct(){
        
    }
    
    // bei newOne fehlt das $-Zeichen
    function insert(Element newOne){ // Auch Fehlermeldung
        
    }
    
}

PHP:
class Liste{ 
     // laut php.net wird var wie public behandelt, dürfte also scheinbar erlaubt sein
    // was für eine Fehlermeldung erhälst du denn?
    var $head; //Fehler,eldung, wieso? 
     
    function __construct(){ 
        $this->head = new Element("aaa"); 
    } 
     
}
 
Also danke dir, aber ich brauche eine normale Liste und die Frage war nur ob man in PHP so implementieren kann. Ich habs jetzt zwar anders gelöst, aber würde mich trotzdem interessieren;).
 
Das brauchst du nicht, ich habs ja schon. Also wie ich es verstehe ist so eine Variablenintialisierung direkt in der klasse nicht möglich. Naja. :)
 
Doch, aber da sind nur skalare Werte (dh konstante,statische Werte) erlaubt.

Also var $test = 'test' ist erlaubt, var $test = $foo nicht.
 
Zurück