Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: czas życie obiektu ?
Forum PHP.pl > Forum > PHP > Object-oriented programming
adamos
Witam
W php5 od jakiegos czasu pisze obiektowe. Jenak mam pytanie. Wiem ze obiekt jest czyszczony po zakonczeniu skryptu. A czy istnieje mozliwosc przeslania obiektu np. do innej strony do ktorej przechodzi sie za pomoca linka questionmark.gif?
Chodzi mi o caly obiekt a nie tylko jego wlasciwosci.

W JSP jest to zrobione tak ze we wlasciwosciach samego obiektu ustawia sie jego czas zycia np. na czas trwania sesji.
W php5 chyba jest to dosc ograniczone questionmark.gif?
CZy moze myle sie i jest jakies rozwiazanie questionmark.gif?
bregovic
Hmmm... Nie zeby to bylo jakies szczegolnie dobre rozwiazanie, ale mozesz pod koniec dzialania programu zserializowac obiekt (serialize" title="Zobacz w manualu PHP" target="_manual) i zachowac go w sesji. Potem na innej stronie na poczatku programu sprawdzasz czy zmienna jest ustawiona (empty" title="Zobacz w manualu PHP" target="_manual) i jesli nie jest pusta to rozserialuzujesz ja - unserialize" title="Zobacz w manualu PHP" target="_manual.
Algorytm moze zdaje sie wygladac tak:
plik1.php:
  1. <?php
  2.  
  3. //start sesji
  4.  
  5. //inkludujemy klase
  6. include 'clasa.obiektu.php';
  7.  
  8. //sprawdzamy czy przeslalismy juz obiekt
  9. if(!empty($_SESSION['obiekt']))
  10. {
  11. //jesli tak to rozserializujemy go
  12. $objekt = unserialize($_SESSION['obiekt']);
  13. }
  14. else
  15. {
  16. //jesli nie to inicializujemy obiekt
  17. $obiekt = new Obiekt;
  18. }
  19.  
  20. //logika...
  21.  
  22. //serializujemy pod koniec programu
  23. $_SESSION['obiekt'] = serialize($obiekt);
  24.  
  25. ?>

Zaznaczam ze tego nigdy nie uzywalem, i pisalem powyzsze z palca.
hawk
Manual też twierdzi, że jeżeli zarejestrujemy po prostu obiekt w sesji (session_register), to automatycznie będzie on serializowany i deserializowny kiedy trzeba. Na logikę, powinno też działać z $_SESSION - w końcu domyślny mechanizm sesji po prostu serializuje tablicę $_SESSION i tyle. Jak tak to nie ma sensu 2x serializować tego samego. Wystarczy
  1. <?php
  2.  
  3. //start sesji
  4.  
  5. //inkludujemy klase
  6. include 'clasa.obiektu.php';
  7.  
  8. if(empty($_SESSION['obiekt'])) {
  9. $_SESSION['obiekt'] = new Obiekt
  10. }
  11. $obiekt = $_SESSION['obiekt']
  12.  
  13. //logika...
  14.  
  15. ?>

Podobnie jak przedmówca, pisałem z palca...
php1983
Cytat(adamos @ 8.10.2004, 12:53:43 ) *
Chodzi mi o caly obiekt a nie tylko jego wlasciwosci.


Nie ma czegoś takiego sad.gif
Pozatym każdy obiekt w php5 składa się z właściwości i metod, metody masz zawsze w definicji klasy, więc wystarczy przekazać własności.
mike
~php1983 za następnego posta w wątku starszym niż rok dostaniesz ostrzeżenie za nabijanie postów.
szagi3891
~mike - masz jakąś schizofremie ? Wskaż miejsce w regulaminie określające ja jakie tematy można odpowiadać a na jakie nie. Liczba postów jest po to żeby ludzie właśnie mogli się dowartościowywać poprzez patrzenie na tą liczbę oraz żeby ich to w efekcie skłaniało do pisania kolejnych postów. Dziwny jesteś ziomek winksmiley.jpg
nospor
Pewnych rzeczy nie trzeba pisac w regulaminie. Moze nie tyle co nie trzeba a nie da sie wszystkiego zawrzec. Regulamin i tak juz jest dlugi i nikt go nie czyta.
Po to są moderatorzy by takie sprawy zalatwiali.

Sobie wyobraź ze teraz każdy zacznie odpowiadac na temat z przed 3,4,... lat.
kszychu
Cytat(szagi3891 @ 3.09.2008, 09:28:50 ) *
~mike - masz jakąś schizofremie ? Wskaż miejsce w regulaminie określające ja jakie tematy można odpowiadać a na jakie nie.

A wiesz co to jest "odgrzewanie kotletów"? Posiedzisz trochę na forach, to się dowiesz.
Cytat(szagi3891 @ 3.09.2008, 09:28:50 ) *
Liczba postów jest po to żeby ludzie właśnie mogli się dowartościowywać poprzez patrzenie na tą liczbę oraz żeby ich to w efekcie skłaniało do pisania kolejnych postów.

Znaczy, podnieca Cię patrzenie na liczbę postów? laugh.gif Ale swoich, czy możesz też patrzeć na posty innych?
Tak dla Twojej informacji: my tu bardziej cenimy JAKOŚĆ postów niż ich ILOŚĆ.
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.