![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
W jakiej kolejności likwidowane są obiekty przy kończeniu skryptu i czy da się to kontolować? Chodzi np o problem z klasą sesji. Mianowicie w destruktorze tej klasy nie powinno (nie można) korzystać z obiektów bo są one już zlikwidowane wcześniej niż sesja. Co jeśli destruktor korzysta z klasy bazy danych? Klasa BD jest w sumie Singletonem więc jak co to postawi mi tą klasę od nowa, ale to niepotrzebny narzut. Mogę też dać w destruktorze session_write_close() i poprostu usuwać obiekt Session na końcu każdego skryptu, ale to też mi sie nie podoba. Dziękuję z góry za wszytskie wzkazówki ![]() -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
jeżeli masz z tym problem, to znaczy że źle zaprojektowałeś swoje klasy. jedną z podstawowych reguł programowania obiektowego jest hermetyczność klas - to znaczy, że kod danej klasy nie powinien zależeć od kodu innych klas (o ile nie jest ich implementacją lub rozszerzeniem)
Cytat Co jeśli destruktor korzysta z klasy bazy danych to oznacza, że twoja klasa sesji musi posiadać właściwość typu klasy bazy danych - wtedy masz gwarancję, że będzie dostępna zawsze dla wszystkich metod, łacznie z destruktorem. jeżeli z wnętrza swojej klasy sesji potrzebujesz odwoływać się do innych, niezależnych obiektów (tutaj bazy danych), to znaczy że właśnie zapomniałeś o regule hermetyczności.
Ten post edytował nevt 23.11.2007, 01:46:27 -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%) ![]() ![]() |
Dziekuję za odpowiedź! Sporo mi się wyjaśniło w głowie dzieki Tobie
![]() -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
dokładnie - i wtedy masz gwarancję dostępu do bazy przez cały czas życia obiektu sesji.
generalna zasada programowania obiektowego: obiekt składa się z danych (właściwości) i funkcji operujących na tych danych (metod). jeżeli metoda obiektu powinna operować na danych zewnętrznych, to te dane (albo obiekty) należy do niej jawnie przekazywać. np.
powodzenia. Ten post edytował nevt 23.11.2007, 11:21:36 -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 21:12 |