Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sesje a obiekty
Forum PHP.pl > Forum > PHP
exman
Witam!
Otóż mam takie pytanie bardziej natury sensu przechowywania obiektu typu mysqli w sesji.
Chodzi o to, że pisząc skrypty w pracy natknąłem sie na pewien problem dostępu do obiektu mysqli stworzonego poza klasą w odrębnym pliku
includowanym na początku skryptu, by można było z niego korzystać trzeba za każdym razem ten plik załączać (rzecz jasna).
Stwierdziłem, że można by obiekt taki zapisać w zmiennej sesyjnej np $_SESSION['mysqli'] rolleyes.gif .
Teraz pytanie czy ktoś coś takiego robił i na jakie problemy się natknął?
Drugie to jak można (czy można) odnieść się do obiektu z wewnątrz klasy (szukałem już tego ale niestety).
vokiel
Można zapisać do sesji przez serializację. Potem odserializować aby była możliwa dalsza praca.
michal74
Najprosciej zrobisz to tak:
0. tworzysz session
1. tworzysz objekt po raz pierwszy w momencie kiedy go bedziesz potrzebowal
2. wywolujesz serialize do jakiejs zmiennej w session
3. w momencie przeladowywania strony sprawdzasz cze istnieje objekt pod okreslonym kluczem w sesji, jesli tak do go pobierasz przypisujac do dowolnej zmiennej korzystajac z funkcji unserialize

pozdro
exman
czy ta serializacja jest konieczna?
ja robiłem tak
  1. <?php
  2. $_SESSION['mysqli'] = $mysqli;
  3. ?>

potem odczyt w dowolnym miejscu
  1. <?php
  2. is_object($_SESSION['mysqli'])
  3. ?>

rozumiem, że serializując ten obiekt zatrzymuje strukturę obiektu ale czy jak tego nie zrobię może się coś stać ?
starach
Dane z tablicy superglobalnej $_SESSION są serializowane automatycznie.
Zresztą sprawdź miejsce w którym one są składowane zobaczysz charakterystyczny ciąg zserializowanych danych.
exman
Jest jakiś sposób na utrzymanie tego połączenia z bazą poprzez zapisanie obiektu w sesji?
Idea była taka, że zapisuje połączenie z bazą w sesji i wykorzystuje go na każdej stronie bez załączania za każdym razem pliku z który tworzy to połączenie,
jednak jak przechodzę na inna stronę to połączenie jest gubione :/

Albo czy jest jakiś sposób do odniesienia się do obiektu mysqli utworzonego poza klasą w jej wnętrzu bez przekazywania obiektu mysqli do klasy za pomocą konstruktora?
pbnan
Obuduj klasę mysqli m.in. w metody __sleep() i __wakeup() o ile dobrze pamiętam.
http://www.devshed.com/c/a/PHP/Working-wit...Objects-in-PHP/ kilka stron o tym masz.
NoiseMc
pbnan tam raczej opisane jest jak zapisywac serializowane obiekty w bazie, a nie identyfikator polaczenia z baza.
Nie jestem pewien ale wydaje mi sie ze identyfikator polaczenia wazny jest tylko do czasu az skrypt sie wykona i za kazdym nowym requestem trzeba polaczenie z baza ponawiac aby uzyskac swiezy identyfikator (po to magiczna metoda __wakeup() w php5)
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.