Jump to content
Froxlor Forum
  • 0

PHP Objekt/Array in String


xocii

Question

Hallo,

 

Ich arbeite an einem Script und bin grade ?berfragt.

 

Ich m?chte ein Script machen was in MySQL Gespeicherte K?rzel, per Array in den richtig zustand zur?ck setzt.

Leider bekomme ich immer irgendwelche Fehler.

 

Beispiel: "Catchable fatal error: Method TestClass::__toString() must return a string value in"

 

Benutzt wird mysql_fetch_row

 

$class = new Array_String($var[1]);
echo $class;
$fach = $faecher[$class];

class Array_String
{
   public $object;
   public function __construct($object)
   {
       $this->foo = $object;
   }

   public function __toString()
   {
       return $this->object;
   }
}

 

Ich bedanke mich jetzt schon mal, auch wenn ich wei? das ich im falschen bereich bin :(.

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

ich sehe nirgends in der klasse, dass $object gesetzt wird...du setzt $this->foo, was aber nirgends definiert ist. ich nehme an $this->object ist NULL und daher f?r PHP kein String...ansonsten versuch es doch mal mit

 

return (string)$this->object;

Link to comment
Share on other sites

Hallo,

 

Nein, das war nicht die l?sung. Aber mit "ich sehe nirgends in der klasse, dass $object gesetzt wird...du setzt $this->foo, was aber nirgends definiert ist" hattest du recht. hab ausversehentlich den fehler mitgenommen...

 

Der Code

 

 

while($var = mysql_fetch_object($query)) {	
$class = new Array_String( "$var->day" );
echo 'Tag: ' . $class; // Return:Tag: mon
if(isset($class)) { 
echo $days["mon"]; //Return: Montag
echo $days["$class"]; //Return: Notice: Undefined index: mon in ...
}

class Array_String
{
   protected $object;
   public function __construct($object)
   {
       $this->object = $object;
   }

   public function __toString()
   {
      return (string)$this->object;
   }
}

 

Und gerade dieses "Notice: Undefined index: mon in .." verstehe ich nicht :/.

Link to comment
Share on other sites

Du bist echt ein bisschen lustig.

 

1) woher kommt jetzt die variable $days? wird nirgends gesetzt

2) WAS genau willst du denn da machen und was soll die Array_String klasse f?r dich machen? Denn im Moment sehe ich den Sinn nicht, dem constructor nen String zu ?bergeben und den wieder per __toString-function zur?ckzugeben.

3) $class = new Array_String( "$var->day" ); < wieso ?bergibst du den parameter in anf?hrungszeichen?

4) warum checkst du ob $class gesetzt ist, benutzt dann aber $days...

5) siehe 2, WAS willst du da ?berhaupt machen? vielleicht ist dir dann leichter zu helfen, wenn wir wissen, was eigentlich hinter der Idee mit der Array_String-Klasse steckt

Link to comment
Share on other sites

1. $days ist ein Array das ich abfragen m?chte.

 

$days sieht so aus

 

$days = array(

"mon" => "Montag",

"die" => "Dienstag",

"mit" => "Mittwoch",

"don" => "Donnerstag",

"fri" => "Freitag".

);

 

2. Ich hab ein MySQL Tabelle wo halt die ganzen Schl?sseln drin stehen. Die Schl?sseln sollen dann per Array vervollst?ndigt werden. Dadurch das sich dahinter ein Sprachsystem versteckt.

3. Weil er ohne " " eine Fehlermeldung anzeigt.

4. echo $days["$class"];

5. Das Wort "mon", was in der Tabelle gespeichert ist, soll per Array $days vervollst?ndigt werden. Leider bekomme ich halt die Fehlermeldung -> Notice: Undefined index: mon in ...

Link to comment
Share on other sites

also...du hast irgendwelche "schl?ssel" in der DB die dir halt dann per array aus der Sprachdatei entsprechende bezeichnungen in der Sprache ausgeben sollen.

 

Wenn ich das so richtig verstanden habe verstehe ich deinen komplizierten Weg nicht.

 

Sagen wir du kriegst das K?rzel (wie auch immer) aus der Tabelle, dann hast du z.B.

 

$today = "mon";

 

So, jetzt hast du dein gegebenes Array $days, wo in der entsprechenden Sprache das Wort "Montag" hinterlegt ist, f?r den Index "mon". Also musst du doch nichts anderes machen au?er:

 

echo $days[$today];

 

und raus kommt "Montag".

Link to comment
Share on other sites

Ja, dann m?sste ich aber jeden tag selbst eintippen :D.

Das Problem ist aber, wenn das "mon" aus der Datenbank geladen wird, das es dann sp?ter eine fehlermeldung ausgibt.

Notice: Undefined index: mon in ...

Link to comment
Share on other sites

lies bitte meinen vorherigen Post nochmal...ich glaube du hast es nicht wirklich verstanden. Oder du beschreibst bitte mal etwas genauer was du genau vorhast und wo welche Daten herkommen und wie diese verwendet werden sollen.

Link to comment
Share on other sites

Die Daten kommen aus einer Tabelle namens "news".

 

Aufbau

 

Tabelle
-> id  -> die aufruf id 
-> owner -> Die ID des Users
-> day -> Datums Tag
-> month -> Datums Monat
-> year -> Datums Jahr 	
-> second -> Sekunde
-> minute -> Minute
-> hour -> Stunde
-> ifchanged -> 1,3,5 - Log Script 
-> lang -> de
-> text -> der text halt
...

 

Nun m?chte ich das, dass K?rzel was in "day" gespeichert ist , mon, von PHP Vervollst?ndigt wird.

Das Problem ist aber , wenn man "day" abfragt und dann an dazugeh?rige Array einf?gt " $days[$day]; ", bekommt man den folgenden Fehler

 

Notice: Undefined index: mon in /usr/home/dominik/public_html/cms/libs/news.lib.php on line 55

 

Und genau auf dieser Linie steht $array[$day];

 

 

Mhh, hoffe das, dass nun genauer erkl?rt ist.

Link to comment
Share on other sites

Dann w?rde ich mal gleich behaupten, dass $days in dem Kontext nicht definiert ist, in dem Fall, dass in news.lib.php eine klasse definiert ist.

 

Falls das der Fall ist:

1) entweder $days innerhalb der Klasse definieren, oder

2) die entsprechende language-file wo days definiert ist erst IN der klasse inkludieren, oder

3) $days als parameter dem klassen-contructor ?bergeben und es dann als klassen-variable verwenden

 

Beispiel 1)

 

class news {

   private $_days = array( 'mon' => 'Monday', 'tue' => 'Tuesdays', ...);
   ...
   public function returnDay($day) {
       return $this->_days[$day];
   }
}

 

 

Beispiel 2)

 

class news {

   public function returnDay($language = 'de', $day = 'mon') {

       // language datei inkludieren, welche
       // das array $days definiert
       include '/lib/'.$language.'.php';

       return $days[$day];
   }
}

 

Beispiel 3)

 


$days = array( 'mon' => 'Monday', 'tue' => 'Tuesdays', ...);

$news = new news($days);

class news {

   private $_days = array();

   public function __construct($days = array()) {
       $this->_days = $days;
   }

   public function returnDay($day = 'mon') {
       return $this->_days[$day];
   }
}

Link to comment
Share on other sites

Ich bedanke mich jetzt schon mal, auch wenn ich wei? das ich im falschen bereich bin :(.

 

Ohne den Schreibfluss hier st?ren zu wollen, kann ich dir w?rmstens empfehlen, Hilfe in ##php (irc.freenode.net) oder in sonstigen PHP-Foren aufzusuchen. Ich kann hier nicht herauslesen das das Problem etwas mit Froxlor zu tun hat. ;)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...