![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 6 Dołączył: 1.02.2010 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam pytanko natury technicznej. Załóżmy, że mam skrypt, dajmy na to user_list.php, który w pętli dodaje do tablicy kolejne obiekty, powiedzmy klasy User. Niech by to w uproszczeniu wyglądało tak:
Załóżmy, że $user_counter jest obliczone wcześniej. Pytanie brzmi tak: jeśli klasa User otwiera w konstruktorze połączenie z bazą celem pobrania informacji o użytkowniku, ale go NIE zamyka, to zgodnie z zasadą, że koniec skryptu i wszystkie połączenia są zamykane, to połączenia zostaną zamknięte po zakończeniu skryptu user_list.php? Czy dobrze rozumuję, że jeśli klasa User nie zamyka połączenia to jeśli pętla będzie miała 30 obiegów to przed zakończeniem skryptu będę miał otwartych 30 równoległych połączeń? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 690 Pomógł: 92 Dołączył: 6.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
Pamiętaj, że w jednym skrypcie jest tylko jedna klasa, chyba, że użyjesz clone
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 6 Dołączył: 1.02.2010 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Pamiętaj, że w jednym skrypcie jest tylko jedna klasa, chyba, że użyjesz clone No ok, ale mam $user_counter obiektów. Chodzi o to, czy jeśli konstruktor skończy pobierać dane i połączenie nie zostanie zamknięte to w takim razie zostanie ono zamknięte dopiero po wykonaniu całego skryptu? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 690 Pomógł: 92 Dołączył: 6.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
Samo się nie zamyka, lepiej dać zamykanie w destruktorze
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@mat-bi: Co mają niby klasy do clone?
Co do tematu - zależy od tego czym i jak łączysz się z bazą danych. Generalnie jeżeli za każdym razem używasz tych samych parametrów połączenia za każdym razem zostanie użyte pierwsze połączenie. Nie zmienia to jednak faktu, że: 1. Co to za durny pomysł, żeby nawiązywać połączenie w takim miejscu. 2. Co to za durny pomysł, żeby obiekt reprezentujący użytkownika (wnioskuję po nazwie) pobierał jakieś dane z bazy? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 690 Pomógł: 92 Dołączył: 6.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi sie, że zawsze jest jedna instancja klasy, dopiero poprzez clone tworzymy wiele.
np.
(przykład z http://museum.webcity.pl/webcity/artykuly.php/t/59) @EDIT: Cytat Object Cloning
Ten post edytował mat-bi 4.05.2011, 15:05:55 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
A zauważyłeś, że Ty nie utworzyłeś nowego obiektu (new ...) tylko utworzyłeś referencję ($on) do już istniejącego ($ja)? Poczytaj o podstawach programowania czyli o zmiennych i referencjach.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 6 Dołączył: 1.02.2010 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 690 Pomógł: 92 Dołączył: 6.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
Sorry, pomieszałem kod, nie dojrzałem.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Bo w obu przypadkach łamiesz jedną z podstawowych zasad OOP jaką jest pojedyncza odpowiedzialność obiektów. A złamanie jej - poza aspektem ideologicznym - niesie za sobą cały szereg problemów, które wynikną jak tylko skończysz projekt i będziesz chciał go rozwijać w przyszłości.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 6 Dołączył: 1.02.2010 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Bo w obu przypadkach łamiesz jedną z podstawowych zasad OOP jaką jest pojedyncza odpowiedzialność obiektów. A złamanie jej - poza aspektem ideologicznym - niesie za sobą cały szereg problemów, które wynikną jak tylko skończysz projekt i będziesz chciał go rozwijać w przyszłości. Hmm... o tym przyznam szczerze nie miałem pojęcia... albo gdzieś mi umknęło między wierszami. Dzięki za informację, będę musiał nadrobić te braki ![]() Jeśli o mnie chodzi: EOT, także z powodzeniem można zamknąć |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 02:33 |