Objektzuweisung an Variable - Error convert to String - Fehler bei der Referenzübergabe?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Objektzuweisung an Variable - Error convert to String - Fehler bei der Referenzübergabe?

    Hi :)

    Kurz nach dem ersten Problem kommt wieder ein Neues zum Zähne ausbeißen:

    Das ist der Übeltäter:

    Quellcode

    1. class programType implements datatype {
    2. private $internalID = NULL; // ID refering to internal database information set
    3. private $ref_qualification = NULL; // minOccurs:1 maxOccurs:1
    4. // attributes
    5. private $id = NULL;
    6. private $ident = NULL;
    7. private $language = NULL;
    8. public function __construct($internalID, $id = 'TU KL', $ident = 'TU KL', $language = 'de-DE') {
    9. $this->id = $id;
    10. $this->ident = $ident;
    11. $this->language = $language;
    12. $this->internalID = $internalID;
    13. $this->fetch_DataFromDB($internalID);
    14. }
    15. public function print_xml() {
    16. $xml = NULL;
    17. $xml = "<program";
    18. if (!is_Null($this->id)) { $xml .= " id='".$this->id."'"; }
    19. if (!is_Null($this->ident)) { $text .= " ident='".$this->ident."'"; }
    20. if (!is_Null($this->language)) { $text .= " language='".$this->language."'"; }
    21. $xml .= ">";
    22. $xml .= $this->ref_qualification->print_xml();
    23. $xml .= "</program>";
    24. return $xml;
    25. }
    26. private function fetch_DataFromDB($internalID) {
    27. $myDB =& new Database();
    28. $sql = "SELECT * FROM bla WHERE id = ".$internalID;
    29. $myDB->query($sql);
    30. $result = $myDB->fetchArray(MYSQL_ASSOC);
    31. if (is_Null($result)) {
    32. throw new Exception('No dataset refering to id='.$internalID.' in table ugr_studienangebot');
    33. } else {
    34. $this->ref_qualification = $this->fetch_qualification($result['intECTS']);
    35. }
    36. $myDB->disconnect();
    37. }
    38. private function fetch_qualification($dataset) {
    39. $credits = new element_credits($dataset);
    40. $this->ref_qualification =& new element_qualification(&$credits);
    41. }
    42. }
    Alles anzeigen


    darin erzeuge ich ein Objekt vom Typ element_credits:

    Quellcode

    1. class element_credits implements UGRxmlCreator {
    2. // attributes
    3. private $ECTScredits = NULL; // decimal
    4. public function __construct($ECTScredits = NULL) {
    5. $this->ECTScredits = $ECTScredits;
    6. }
    7. public function print_xml() {
    8. $xml = NULL;
    9. if (!is_Null($this->ECTScredits)) { $xml = "<credits ECTScredits='".$this->ECTScredits."'/>"; }
    10. return $xml;
    11. }
    12. public function get() {
    13. return $this->ECTScredits;
    14. }
    15. }
    Alles anzeigen


    und will dessen Referenz übergen an diese Klasse:

    Quellcode

    1. class element_qualification implements UGRxmlCreator {
    2. private $ref_credits = NULL;
    3. public function __construct(element_credits $ref_credits = NULL) {
    4. $this->$ref_credits = $ref_credits;
    5. }
    6. public function print_xml() {
    7. $xml = NULL;
    8. echo "huhu";
    9. var_dump($this->ref_credits);
    10. return;
    11. $xml = "<qualification>";
    12. if (!is_Null($this->ref_credits)) { $xml .= $this->ref_credits->print_xml(); }
    13. $xml .= "</qualification>";
    14. return $xml;
    15. }
    16. }
    Alles anzeigen


    Der Fehler liegt nun laut Compiler in Zeile 9 der letzten Klasse, also hier:

    Quellcode

    1. private $ref_credits = NULL;
    2. public function __construct(element_credits $ref_credits = NULL) {
    3. var_dump($ref_credits); // Zeile 8
    4. $this->$ref_credits = $ref_credits; // Zeile 9
    5. }


    der Error sieht so aus:
    Catchable fatal error: Object of class element_credits could not be converted to string in /www/htdocs/w00c8974/_UGR/src/element_qualification.php on line 9
    ein var_dump in angesprochener Zeile 8(!) ergibt:
    object(element_credits)#3 (1) { ["ECTScredits:private"]=> string(3) "180" }
    Somit scheint die Übergabe von $credits an den Konstruktor von element_qualification ja ok zu sein, und der Fehler scheint erst bei der Übergabe an die klassenprivate Variable zu erfolgen...hier passiert doch aber nix von wegen convert to String wie in der Fehlermeldung angegeben, oder?

    Gruß