Ongelmana on funktion ulkopuolisen muuttujan arvon tulostaminen.
En halua käyttää parametreja funktiota print_conn kutsuttaessa, koska silloin minun täytyisi muokata yli sataa tiedostoa. Global $conn_sivusto ei myöskään kuulosta hyvältä.
Miten saisin tämän toimimaan?
$connSivusto = "jee"; print_conn(); function print_conn($conn = $connSivusto) { print $conn; }
Eikö sun tekstieditorissa pysty etsimään tuota funktiota ja automatisoimaan tuota "tiedostojen muokkaamista"?
Tai vastaavasti, kuinka usein tuo $connSivusto -muuttujan arvo vaihtuu koodisi sisällä? Lähinnä, että voisiko print_conn:n sisällä olla jokin toiminto, joka hakisi tiedon jollain muulla tapaa?
Komppaan lebeä.
Se Global ei kuulosta hyvältä, koska tuollainen "funktion ulkopuolisen muuttujan arvon tulostaminen" ei ideana kuulosta hyvältä.
Jos kuitenkin haluat tuollaisen "huonon idean" toteuttaa, niin global tekee juuri sen mitä pyydät.
Grez kirjoitti:
Se Global ei kuulosta hyvältä, koska tuollainen "funktion ulkopuolisen muuttujan arvon tulostaminen" ei ideana kuulosta hyvältä.
Jostain luin, että funktiossa voisi olla use-lisäys, jolloin voisi käyttää ulkopuolista muuttujan arvoa. Mutta en tiedä, miten tuo use tuohon määritetään.
Jos tuo alussa näyttämäsi koodi toimisi (tuollaisena tai jollain kikalla), se olisi käytännössä ihan sama asia kuin globaalin muuttujan käyttö. Globaalin muuttujan piilottaminen johonkin ei tee siitä vähemmän globaalia, jos idea on kuitenkin sama.
Use liittyy vain nimettömiin funktioihin:
$jokin_muuttuja = 123; $muuttujassa_oleva_funktio = function ($parametri) use ($jokin_muuttuja) { return $jokin_muuttuja + $parametri; };
Aihe on jo aika vanha, joten et voi enää vastata siihen.