![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 10.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Tworzę na własne potrzeby rdzeń do obsługi bazy. Plik dołączany jest przez require_once. Na samym początku deklaruje zmienną $db i w funkcjach create_connection i close_connection wskazuje, że jest to zmienna globalna. W pliku, w którym dołączyłem wywołuje kolejno create_connection i następnie close_connection. Druga nie ma w ogóle informacji o stworzonym w pierwszej obiekcie. W XDebugu widzę, że jest to obiekt null, czyli global nie działa. Poczytałem trochę o zakresach i przyznam, ze nadal nie mogę dojść dlaczego tak się dzieje. Gdy używam $GLOBALS['db'] wszystko działa. Bardzo prosiłbym o wyjaśnienie dlaczego tak się dzieje.
Ten post edytował rorschach 10.07.2009, 08:39:48 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
zrezygnuj ze zmiennych globalnych - łątwo je możesz zastąpić tworząc jakąś klasę statyczną/ lub klasę ze zmiennymi statycznymi i odwołując się do jej zmiennych - będziesz mógł do nich odwołać się w każdym miejscu swojego skryptu... przykąłdowa prosta klasa:
Kod class dane{ static $ile=0; } i aby się odwołać do tej zmiennej wystarczy napisać dane::$ile - tą zmienną również możesz zmieniać itd... widzę, że kożystasz z klas ale to z wbudowanych w php - po mału np. zastępując zmienną globalną jakimiś kalsami będziesz się przestawiał na inne myślenie raczej ![]() ![]() -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 10.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Taki mały singleton to w sumie fajna sprawa, ale przechodzę na php z javy i przyznam, że cały czas na czymś się zatrzymuje i dlatego postanowiłem napisać coś w miarę prostego po kolei starając się wyłapać wszystkie haczyki.
Mały update: plik z funkcjami jest w folderze core w głównym folderze jest plik require_all.php i w nim includuje wszystkie funkcje niezbędne do działania całej apliakacji i dopiero w pliku checkLogin.php includuje plik require_all.php. Tu jeszcze podejrzewam, że coś mogłem napsuć. ----/core ----dbase_api.php (definicje funkcji) -/ -index.php(wywołuje checkLogin.php) -require_all.php (tu są wszystkie konieczne includy) -check_login.php (tu wywołuje funkcje) |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Taki mały singleton to w sumie fajna sprawa, ale przechodzę na php z javy i przyznam, że cały czas na czymś się zatrzymuje i dlatego postanowiłem napisać coś w miarę prostego po kolei starając się wyłapać wszystkie haczyki. Mały update: plik z funkcjami jest w folderze core w głównym folderze jest plik require_all.php i w nim includuje wszystkie funkcje niezbędne do działania całej apliakacji i dopiero w pliku checkLogin.php includuje plik require_all.php. Tu jeszcze podejrzewam, że coś mogłem napsuć. ----/core ----dbase_api.php (definicje funkcji) -/ -index.php(wywołuje checkLogin.php) -require_all.php (tu są wszystkie konieczne includy) -check_login.php (tu wywołuje funkcje) Zrób lepiej jak kolega radzi, albo obiekt klasy db przekazuj jako parametr. Ew. Możesz użyć singletona. Nie wiem co includujesz w pliku require_all.php , powiem tylko że do wczytywania klas php5 ma gotową funkcję. (__autoload()) -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 12:48 |