![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 67 Pomógł: 0 Dołączył: 13.09.2004 Ostrzeżenie: (0%) ![]() ![]() |
Dawno nic nie pisałem, miałem uraz ale mam nadzieję że mi pomożecie
![]() Skrypt kończy swoje działanie (jestem pewien co do wykonania ostatniej linijki, dałem tam sobie echo END) i po tym nie ma już nic, podczas gdy jakby po zakończeniu tego wszytskiego jest wywoływany destruktor klasy config (wyala mi komunika o błędzie którego nie ma). Nie innej tyko tej właśnie choć są wywołane instancje innych klas. Dzieje się to w wielu wersjach PHP5. Ma ktoś może pojęcie co się dzieje? -------------------- current: nexcite cms (0.2.5) running on top of netsource framework (0.5.3)
workbench: nsapi | php 5.1.2 | mysql 5.0.18 | phpmyadmin 2.9 rc1 | zend studio 5.2.0 | apache/2.2.0 (linux/suse) |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
destruktor uruchamiany jest w momencie niszczenia obiektu (czyli usuwania go z pamieci) Dzeje się tak w przypadku wykorzystania unset( zmienna )
Jeśli jednak nie wywołasz unset na wszystkich wykorzystywanych obiektach, to zostanie on "zniszczony" już po zakończeniu działania skryptu. Co ciekawe - destruktory w php5.0 uruchamiane są naprawdę na samym końcu. Nawet po zamknięciu mechanizmów odpowiedzialnych za sesje. W PHP5.1 dokonywano tu jakichś zmian, i nie wiem, jak to teraz wygląda. -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 67 Pomógł: 0 Dołączył: 13.09.2004 Ostrzeżenie: (0%) ![]() ![]() |
Ale dalej nie rozumiem dlaczego uruchomił się tylko ten destruktor. Mam również inne klasy z destruktorami i żaden z nich się ni wywołuje.
Teraz postaje usunięcie destruktorów albo dodanie zmiennej $scriptEnded = true; Mam rację? A w php 5.1 miałem problem z autoloaderem i dlatego przesiadłem się na wersje wcześniejsze. Ten post edytował Neotion 16.01.2006, 21:49:02 -------------------- current: nexcite cms (0.2.5) running on top of netsource framework (0.5.3)
workbench: nsapi | php 5.1.2 | mysql 5.0.18 | phpmyadmin 2.9 rc1 | zend studio 5.2.0 | apache/2.2.0 (linux/suse) |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Jeśli nie chcesz mieć wywołanych destruktorów automagicznie, to po prostu zrezygnuj z tej nazwy metody.
A co do PHP5.1 - pracuję na nim od czasów pierwszych bet i jestem bardzo zadowolony. -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Prościej mówiąc, deskrutkor do metoda, która jest automatycznie wywoływana jako ostatnia.
dajmy na to:
cow zróci: Kod konstruktor show destruct pozdrawiam |
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ale dalej nie rozumiem dlaczego uruchomił się tylko ten destruktor. Mam również inne klasy z destruktorami i żaden z nich się ni wywołuje. A moze sie wywołują tylko nie zwracają błędów zadnych i dlatego o tym nie wiesz ?![]() |
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Klasy z destruktorami a posiadanie instancji tych klas, ktore sa usuwane na koncu dzialania skryptu to dwie rozne rzeczy.
-------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 67 Pomógł: 0 Dołączył: 13.09.2004 Ostrzeżenie: (0%) ![]() ![]() |
Ok, uznaje to za pewen bug w php 5.0 i w php 5.1 z tym problemu nie ma.
Innych destruktorów nie wywołało bo w destruktorze config bylo die(err); Mój błąd. Prosty sposób na poradznie sobie z tym: Na końcu skryptu:
I w każdym destruktorze
Wiem że to trosze nieprofesjonalne ale cóż... -------------------- current: nexcite cms (0.2.5) running on top of netsource framework (0.5.3)
workbench: nsapi | php 5.1.2 | mysql 5.0.18 | phpmyadmin 2.9 rc1 | zend studio 5.2.0 | apache/2.2.0 (linux/suse) |
|
|
![]()
Post
#9
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
czesc instacji klas moze zostac usunieta po wyslaniu juz odpowiedzi do przegladarki, sprawdz to operujac np na plikach.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 23.06.2025 - 07:28 |