Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Korzystanie ze zmiennej globalnej w funkcji
Forum PHP.pl > Forum > PHP > Object-oriented programming
Apocalyptiq
Do obsługi MySQL wykorzystuje bibliotekę AdoDB. I chcę jedną z jej funkcji wrzucić do swojej funkcji:

$nr=1;
function addEvent($team,$plr,$event,$ok=1){
$db->Execute('INSERT INTO events (meczId,nr,team,plr,event,ok) VALUES('.$meczId.','.$nr.','.$team.','.$db->Quote($plr).','.$db->Quote($event).','.$ok.')');
$nr++;
}

Ale wtedy wywala mi błąd:
Fatal error: Call to a member function Execute() on a non-object in /opt/lampp/htdocs/siatka/sites/play.php on line 11

Jak wrzuce na początek tej funkcji linijke:
global $db;
to niby błędów strona nie wywala, ale w bazie nic się nie dzieje :/ To $db to klasa czy coś takiego? Deklarowana jest na początku dokumentu, i tam łączy się z bazą.
Wiem że można po prostu przekazywać zmienną $db w parametrze funkcji, ale może obejdzie się bez tego i jest jakiś prostszy sposób?
webdice
Przekazuj obiekt db jako parametr funkcji, ewentualnie skorzystaj z global" title="Zobacz w manualu PHP" target="_manual (ale nie jest to zalecane).
Apocalyptiq
Właśnie global jakoś mi nie chciało działać - może działa tylko przy zmiennych, a nie obiektach. Więc będę to $db przerzucał w parametrze, dzięki webdice za pomoc smile.gif

Jednak ten błąd nie leżał po stronie $db - nie przekazałem do funkcji jeszcze dwóch innych zmiennych, które były globalne smile.gif Skorzystam jednak z tego global - dla $db i tamtych dwóch zmiennych.
mike
Cytat(Apocalyptiq @ 18.10.2008, 17:18:14 ) *
Właśnie global jakoś mi nie chciało działać - może działa tylko przy zmiennych, a nie obiektach.
A co za różnica? Obiekty również są zmiennymi. Źle to zastosowałeś skoro nie działało.
Cytat(Apocalyptiq @ 18.10.2008, 17:18:14 ) *
Więc będę to $db przerzucał w parametrze, dzięki webdice za pomoc smile.gif
Rozwiążanie też niezłe. Wszystko byłoby lepsze od wykorzystania zmiennych globalnych.
Do przechowywania połączenia z bazą danych skorzystaj z czegoś takiego jak Rejestr. Znajdziesz w sieci sporo informacji o wzorcu programowania Rejestr (ang. Register Pattern).
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.