[ luner @ 30.09.2002. 22:44 ] @
Evo prvo koda:

else {
$slog = readdir($dir);
while ($slog) {
if (substr($slog, -8) == ".inc.php") {
include("../etc/mod/registar/$slog");
echo "<p><b>$modinfo</b>:</p>";
}
$slog = readdir($dir);
}
closedir($dir);
}

Dakle, ovaj kod učitava sve fajlove iz direktorijuma /etc/mod/registar/ koji imaju ekstenziju .inc.php.

Promenljiva $modinfo koja se javlja se nalazi u SVAKOM od fajlova koji se include-uju. Za svaki fajl ona ima drugačiju vrednost. (Kao i sve ostale promenljive koje se javljaju - u principu, ovi fajlovi su identifikatori modula tj. sadrže informacije o modulu - ime, opis, lokacije itd. - uglavnom, sve promenljive istih imena ali za svaki fajl nova vrednost)

Problem koji se javlja je da ovakav kod samo prvi put odradi posao kako treba. Već kad treba da učita sledeći fajl on pukne:

Fatal error: Cannot redeclare...

Kako rešiti ovaj problem?
[ -zombie- @ 01.10.2002. 04:29 ] @
nije problem uopste u $modinfo promenjivoj, niti u bilo kojoj drugoj promenjivoj.

u php-u promenjive mogu de se redeklarisu zilion puta, ako zelis.

medjutim, konstante i klase ne mogu da se redefinisu. za konstante pogledaj da li imash negde define() funkciju u datim modulima, a za klase, proveri da li imash dve klase koje se zovu isto...

(a sto se prethodna dva posta tice, ili sam ja glup pa ih ne razumem, ili su promasili temu...)
[ luner @ 01.10.2002. 09:49 ] @
UH, posle dužeg smaranja sam uspeo ovo da rešim ali na nevidjeno komplikovan i prilično (u daljem razvoju) neupotrebljiv način tako da sam uzeo alternativno rešenje - MySql tabela samo za module.

U svakom slucaju, hvala!
[ -zombie- @ 02.10.2002. 02:35 ] @
a u cemu je bio problem?


ps, veoma lepo sto moderatori rade svoj posao ;) ali onda moj prvi post, u kome pominjem prethodna dva? posta zvuci pomalo cudno ;)
[ leka @ 02.10.2002. 06:55 ] @
luner, ovo pitanje je trebalo da postavis tamo gde si postavio i prethodno :)

elem nema to nikakve veze sa ovim sto zombie prica... svi tvoji problemi nastaju zbog toga (ovo je pretpostavka) sto u php.ini fajlu nisi podesio da se varijable "prenose" iz modula u modul... Sad ja ne znam napamet koja tacno varijabla je za sta, ali imas odlicnu dokumentaciju u vezi toga u PHP Manual-u, citavo jedno poglavlje je posveceno upravo ovome, i svaka stavka u php.ini je posebno objasnjena!
[ Goran Rakić @ 02.10.2002. 14:44 ] @
sigurno je, 100% da si u modulima imao neku funkciju ili klasu koje su imale ista imena. sigurno je opet, 100%, da varijabla nije problem! Problem je sto svaki include() stavlja taj fajl na to mesto, e sada onda se desi da dobijes nekoliko istih funkcija u fajlu. Kako mu to dodje preklapanje sa istim parametrima php krene da vristi.
[ -zombie- @ 03.10.2002. 01:26 ] @
Citat:
leka:
elem nema to nikakve veze sa ovim sto zombie prica... svi tvoji problemi nastaju zbog toga (ovo je pretpostavka) sto u php.ini fajlu nisi podesio da se varijable "prenose" iz modula u modul... Sad ja ne znam napamet koja tacno varijabla je za sta, ali imas odlicnu dokumentaciju u vezi toga u PHP Manual-u, citavo jedno poglavlje je posveceno upravo ovome, i svaka stavka u php.ini je posebno objasnjena!


svaka tebi cast leka (cim si supermoderator, mora da za to postoje razlozi) ali ne morash bash da se petljash sa necim u sta se ne razumesh...

gde bre to u php man-u (molim te pokazi mi) ima opisana opcija kojom se iz php-a iskljucuje prenos varijabli izmedju modula? pa cemu bi onda moduli mogli da sluze???

a i kako bi neprenosenje varijabli moglo da proizvede "redefine" gresku?

problem je (najverovatnije) bio ono sto sam ja naveo, mada sam zaboravio da pomenem i redeklaraciju funkcija...
[ Guardian OfThe Blind @ 03.10.2002. 08:09 ] @
kada nisi siguran da je funkcija možda već definisana koristi:

bool function_exists ( string ime_funkcije)

a za konstante:

bool defined ( string ime_konstante)

ako ne reši skroz problem, možda će ga bar naći...