Autor Zpráva
Prochy
Profil
Zdravim,

přebírám jeden projekt, kde programátor asi moc nestíhal a byl trochu méně spolehlivý, co se týče časových dohod. Projekt měl hozený na svém serveru. Teď jsem to hodil na hosting, kde by měla aplikace fungovat. Na řádku
$sql = call_user_func_array(array($this, "get". ucfirst($name)),$arguments);

Chodí chybu: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 50854 bytes)

Pokud tomu rozumím, tak tahle funkce zavolá funkci s názvem getNejakyNazev v dané třídě a předá ji případně v parametru $arguments.

Když si dumpnu "get". ucfirst($name)), tak to je po řádkách $prechodzi."get". ucfirst($name)). Počítám, že tohle není chyba serveru, ale chyba v kódu, jelikož se to zacyklí a neustále se volá funkce a zanoří se to až do té doby, dokud nedojde volné místo v paměti. Je to tak?

Děkuji
Virtus
Profil
Zdravím,
chyba Allowed memory size...., může být způsobena ledazčím, každopádně to zacyklení vypadá v tomto případě jako nejpravděpodobnější, s extension do php xdebug si to můžeš snadno ověřit, protože přidává do PHP kontrolu zacyklení xdebug.max_nesting_level: http://www.xdebug.org/docs/basic, možná než kontrola by bylo lepší říct možnost nastavit hloubku/úroveň vnoření
Prochy
Profil
Virtus:
Díky za informaci o xdebug pluginu. Měl jsem pravdu, vyhodí to chybu na tom zanoření.
Tori
Profil
Prochy:
To vypadá jako kdyby implementace __get() a __call() volaly střídavě jedna druhou. Možná stačí doplnit ten veřejný getter.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0