Object ID anstatt Inhalt der Variable

Michelle85

Mitglied
Hallo,
ich hab da ein Problem und zwar habe ich eine Klasse mit verschiedenen Funktionen.
Wenn ich in einer Funktion einem Objekt einen Wert zuweise und diesen ausgeben möchte, erhalte ich die Object ID und nicht den Wert.(zB. Object id #2 anstatt der Wert 'Test')

Kann mir jemand sagen was ich da falsch mache ?

MfG

Michelle85

Hier ein Auszug aus meinem Quellcode :
PHP:
<?php
class Question 
{

  var $id;
  var $type;
  var $topic;
  var $answerTemplate;
  var $questionText; 

  
  function Question() // Konstruktor
  {
        $this->questionText='';
	    $this->topic='';
	    $this->answerTemplate=none;
	    $this->type='';
	    $this->id='';
	   
  }

  function setAnswer()  // Funktion setAnswer wo der Fehler auftritt 
  { 
        switch($this->type) // $this->type wird in einer anderen Funktion ein Wert zugewiesen
        { 
               case 1 : {    // Einfachauswahl 
                             include_once 'includes\Einfachauswahl.class.php'; 
                             $this->answerTemplate = new Einfachauswahl($this->id); 
                             echo $this->answerTemplate;      // Hier wird nur die Objekt ID ausgegeben aber nicht der Wert   
                             break; 
                        } 
               case 2 : { // Mehrfachauswahl 
                          break; 
                        } 
        } 
  } 
} 
 <?
 
Zuletzt bearbeitet:
Hi,

hier der Quellcode der Einfachauswahl.class.php.
Der Code ist noch nicht sehr ausgereift müsste aber eigentlich funktionieren^^.

PHP:
class Einfachauswahl 
{
  var $answerList;
  var $questionId;
  
  function Einfachauswahl($id)  // Konstruktor
  {
      $this->questionId= $id;
      $this->answerList = array();
      $this->addAnswer(); 
      $this->addAnswer();
      $this->showForm();
  }
 
  function addAnswer()  // Es wird eine Antwortmöglichkeit hinzugefügt
  {
    $addAnswer = array( 'id'	=> 0, 'answer' => '','correct' => 0);
    $this->answerList[] = $addAnswer;
  }
  
  function delAnswer() // Es wird eine Antwortmöglichkeit gelöscht  
  {
    $delAnswer = array_pop($this->answerList);
  }
  
  function showForm () // hier wird nur ein HTML Formular angezeigt
  {
  }									
}
 
Du musst bei der Funktion noch einen Return Wert festlegen.
PHP:
function Einfachauswahl($id)  // Konstruktor
  {
      $this->questionId= $id;
      $this->answerList = array();
      $this->addAnswer(); 
      $this->addAnswer();
      $this->showForm();
  }
 
Du musst bei der Funktion noch einen Return Wert festlegen.
PHP:
function Einfachauswahl($id)  // Konstruktor
  {
      $this->questionId= $id;
      $this->answerList = array();
      $this->addAnswer(); 
      $this->addAnswer();
      $this->showForm();
  }

Ein Konstruktor hat keinen return-Wert!

$this->answer referenziert dein Einfachfauswahl-Objekt. Entweder, du implementierst eine Methode in der Klasse 'Einfachauswahl', die den Text formatiert und zurückgibt (Aufruf lautet dann z.B.: echo $this->answer->format()), oder du änderst die Default-Ausgabe des Objekts (dazu die Methode __toString() überschreiben - das geht allerdings erst ab PHP5!).

*edit*
Du hast ja schon eine entsprechende Methode - showForm(). Du musst sie jetzt nur noch fertigschreiben...
 
Zuletzt bearbeitet:
Zurück