Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Problem z tablicami obiektów
Forum PHP.pl > Forum > Przedszkole
vegelus
Witam.

Mam problem związany z wywołaniem metody __toString
Tworze sobie coś takiego. Do tablicy labirynt przypisuję obiekty, w których mam zdefiniowane metody __toString. W jaki sposób mogę dopisać do zmiennej $strTab wynik działania metody obiektu przechowywanego w tablicy labirynt? Działa jak zamiast pakować wszystko do zmiennej od razu wyświetlam poprzez echo ale chyba mało to eleganckie?
  1. <?php
  2. public function __toString(){
  3. $strTab = "\n <TABLE CELLSPACING=\"0\" CELLPADDING=\"0\" BORDER=\"0\"\n";
  4. for($i = 1; $i <= $this->wielkosc*2; $i++){
  5. $strTab .= "<tr>\n";
  6. for($j = 1; $j <= $this->wielkosc*2; $j++){
  7. $strTab .= "<td>";
  8. if(is_object($this->labirynt[$i][$j])){
  9. $strTab .= $this->labirynt[$i][$j];//w tym miejscu wyświetla mi coś takiego "Object id #5" 
  10. }else {
  11. $strTab .= "<img src=\"obrazki/pusty.png\" width=\"45\" height=\"45\" border=\"0\" alt=\"Labirynt śmierci\">";
  12. }
  13.  
  14. $strTab .= "</td>\n";
  15. }
  16. $strTab .= "</tr>\n";
  17.  
  18. }
  19.  
  20.  
  21. $strTab .= "</TABLE>\n";
  22. return $strTab;
  23. }
  24. ?>
nevt
Cześć.

Miałem ten sam problem. Znalazłem w dokumentacji PHP, że w wersjach wcześniejszych niż 5.2 magiczna metoda __toString jest wywoływana automatycznie, tylko wewnątrz wywołań echo i print. Jeżeli masz odpowiednią wersję serwera PHP , spóbuj jawnej konwersji: (string)$strTab...
Jeżeli masz starszą wersję PHP - to po prostu wywołaj jawnie metodę: $strTab->__toString.

Pozdrawiam.
vegelus
Rozwiązanie proste smile.gif
Przemianowałem metodę z __toString() na Draw() i jawnie ją wywołuję a funkcja zwraca oczekiwany string.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.