Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP] Przekazanie obiektu do pliku ładowanego przez AJAX
Forum PHP.pl > Forum > PHP
Petre
Witajcie,
czy jest jakaś inna metoda,niż ta którą obecnie stosuję, a mianowicie:

plik index.php posiada jakieś załóżmy menu z linkami.
Każdy link jest obsługiwany przez jquery i ajax czyli, jak wszystkim pewnie wiadomo, klikamy w odnośnik i następuje załadowanie przy użyciu ajaxu nowej treści.
Pytanie teraz:
w index.php tworzę obiekt do obsługi bazy danych (oczwyiście required do pliku jest).
w ajaxie chciałbym wykorzystać zapytanie do bazy, ale nie mogę się odnieść do owego obiektu utworzonego w indexie.
Muszę ponownie w danym pliku AJAXu dawać odniesienie do pliku z klasą i definiować na nowo owy obiekt bazy inaczej dostaję:
Fatal error: Call to a member function getAll() on a non-object...

Jakieś propozycje ? Czy może jest to jedyne rozwiązanie i trzeba dopisywać za każdym razem ścieżkę i tworzyć tymczasowe obiekty ?
lukaskolista
To wynika z natury skryptow - sa wykonywane i koniec, wszystko znika. Przed kolejnym wykonaniem skryptu wszystko trzeba zainicjowac na nowo. Mozna napisac system routingu + odpowiedni dla Ciebie autoload i za kazdym razem wywolywac index.php.

Jednak tak utworzone obiekty zawsze beda inne, jezeli zmienisz cos za 1 razem, to za 2 tej zmiany juz nie bedzie. Mozna zapamietywac stan obiektow (np. serializacja), ale chyba nie o to tutaj chodzi.
Petre
czyli, jak rozumiem, sposób w jaki to obecnie robię jest właściwy ?
lukaskolista
Tak, jednak da sie to uproscic, ale potrzeba do tego troche wkladu pracy
tehaha
To, że przy każdym żądaniu http tworzy się nowe obiekty to sprawa oczywista i tak to po prostu działa. Z Twojego opisu wnioskuje, że to co u Ciebie komplikuje sprawy to mało elastyczny projekt skryptu.
Cytat
w index.php tworzę obiekt do obsługi bazy danych (oczwyiście required do pliku jest).

Czyli wygląda na to, że każdy plik zaczyna się całą masą require() żeby podołączać wszystko co może być potrzebne, a to jest słabe i sztywne rozwiązanie. Powinieneś do każdego pliku dołączać jakiś core.php, który będzie zawierał połączenie z bazą, metodę __autoload() i wszystko co będzie potrzebne będzie się automatycznie ładować.

http://php.net/manual/en/language.oop5.autoload.php
Petre
Cytat(tehaha @ 12.06.2012, 13:40:45 ) *
To, że przy każdym żądaniu http tworzy się nowe obiekty to sprawa oczywista i tak to po prostu działa. Z Twojego opisu wnioskuje, że to co u Ciebie komplikuje sprawy to mało elastyczny projekt skryptu.


Do tego właśnie dążę. Bez sensu jest ciągłe przeklepywanie masy require (pomijając już estetykę i przejrzystość kodu).
Pomysł z autoload przyznam, że jest całkiem ciekawy.
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.