Autor Zpráva
Reprak
Profil *
Zdravim, mam problem s rekurzi ve tride:

class gbook extends main {
  function gbook_odpovedi($id_kapely, $predek = 0, $zanoreni = 0) {
    $sql = mysql_query("SELECT * FROM `b_gbook` WHERE `g_ka_id`='".$id_kapely."' and `g_rodic_id`='".$predek."' ORDER BY `g_datum` DESC");
    $zanoreni = $zanoreni + 50;
    while($dotaz = MySQL_Fetch_Array($sql)) {
      $uzivatel = $this->uzivatel_info($dotaz['g_uzivatel']);
      $vypis.= '<div style="padding-left: '.$zanoreni.'"><small><strong>'.$uzivatel['nick'].'</strong> - '.$dotaz['g_datum'].'</small><br />'.$dotaz['g_text'].'</div><br />';
      $vypis.= $this->gbook_odpovedi($id_kapely, $dotaz['g_id'], $zanoreni);
    }
    $zanoreni = $zanoreni - 50;
    return $vypis;
  }

...



je mi jasne, ze je chyba v $this->gbook_odpovedi(... protoze kdyz funkci "vyndam" ze tridy, odstranim $this->, tak bez problemu funguje...zkousel jsem i self::, ale beze zmeny

- aktualne PHP nevypise zadnou chybu, funkce neudela vubec nic

Dekuji za reakce
mckay
Profil
Reprak:
Nejsem si jistý, jestli ti poradím to co potřebuješ, ale zkus volat gbook::gbook_odpovedi();
Reprak
Profil *
to jsem uz taky zkousel, nefunguje....
tiso
Profil
Reprak: keď tam dáš static function gbook_odpovedi(...) tak by to mohlo ísť.
Majkl578
Profil
tiso:
Ve statickém kontextu neexistuje $this.

Reprak:
Jak tu metodu voláš? Mimojiné, tohle je kód v PHP 4.
Reprak
Profil *
Majkl578:
mas namysli:
$gbook = NEW gbook;
echo $gbook->gbook_odpovedi(K_ID);


??
fopen
Profil *
možno by stalo za pokus zadeklarovať premennu $vypis ako vlastnosť triedy a pristupovať k nej referenčne $this->vypis
tiso
Profil
Majkl578: ja viem, moja rada platí súčasne s radou od mckay-a.
btw. kde vidíš že toto je kód v PHP4?
Majkl578
Profil
tiso:
v PHP 5 se běžně používá u metod viditelnost. mckayova odpověď má taktéž chybu static x $this.

[#6] Reprak:
To nám říká, že používáš instanci, tudíž $this je použito správně. Čitelnost kódu je ale hrozná.
tiso
Profil
Majkl578: keď sa neuvedie viditeľnosť, tak je public.

mckayova odpověď má taktéž chybu static x $this.
Si si istý?
...
static function gbook_odpovedi(...){
  ...
  $vypis.= gook::gbook_odpovedi(...);
  ...
}
Majkl578
Profil
[#10] tiso
To sice je, ale je zvykem uvádět i přesto.
mckay navrhl změnu $this-> za gbook::, což je špatně, protože nestatická metoda volaná staticky emituje chybu E_STRICT. Navíc problém bude i v obsahu, jelikož $this ve statickém kontextu neexistuje (logicky).
tiso
Profil
Majkl578: tak ešte raz: keď to upraví podľa toho, ako som uviedol v [#10], tak tam bude aká chyba?
Majkl578
Profil
tiso:
Nemluvil jsem o tom, co jsi uvedl ty, ale o tom, co uvedl mckay. U toho tvého bude chyba pouze u jeho současného volání, viz [#6].
tiso
Profil
Majkl578: tak neviem ako u teba, ale u mňa veta „ale zkus volat gbook::gbook_odpovedi();
znamená, že všade, kde sa volá tá metóda ($this->gbook_odpovedi(...), či $gbook->gbook_odpovedi(...)), sa to nahradí za gbook::gbook_odpovedi(...).
Majkl578
Profil
tiso:
Ano, volání nestatické metody staticky.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: