![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 8.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mam troche moze glupie pytanie ale nie dziala mi jedna rzecz i zastanawiam sie dlaczego.
Mam klase w ktorej jest zdefiniowana funkcja __destruct(). Niestety podczas konczenia wykonywania sie skryptow funkcja ta nie zostaje wywolana pomimo ze klasa o ktorej mowa zostala wykorzystana. Mam wiec pytanie czy dziala to na wszystkich wersjach php5 (o ile mi wiadomo to tak) i czy przy konczeniu programu wywoluje sie ta procedura automatyczna czy trzeba zrobic przykladowo unset($jakasklasa) - co tez u mnie nie dziala (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Z gory dzieki za podpowiedz. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
tak dziala na wszystkich php5, podaj moze kod ?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 8.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Kod jest banalny:
Kod jest o tyle prosty ze ma wywolac funkcje save() ktora ma byc uzywana do zapisywania ustawien aplikacji - jest to prosty wzorzec Registry. Z gory mowie ze funkcja save() wywolywana oddzielnie dziala poprawnie. Niestety __destruct nie uruchamia sie automatycznie. Pozostale funkcje typu __construct(), __autoload() itp dzialaja poprawnie. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
a napisz echo $this->dirty...
boc cos mi tu smierdzi falsem w $this->dirty (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 8.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Probowalem ale nawet jak dasz jakies echo na poczatku to i tak sie nie wyswietla. Poprostu dziala tak jakby pomijal _destruct() i zastanawia mnie dlaczego (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
nic nie wyswietla, bo nic niema w tej zmiennej, w destrukt, zrob $this->dirty = true a zobaczysz ze bedzie dzialac, ale to tylko zeby ci pokazac ze dziala destruktor, podaj mi caly kod to ci powiem co jest nie tak.
Ten post edytował nasty_psycho 24.08.2006, 16:50:14 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 8.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Caly kod klasy:
Jak cos znajdziesz to daj znac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
no pewnie ze nic nie zrobi bo nigdze nie przydzielasz jej innej wartosci niz false na poczadku, daj np, w __construct $this->dirty = true, i wykonaj, ale wydac ze zapomniales ustalic w jakiejkowiek funkcji zeby zmieniala $this->dirty na true
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 8.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
jesli ta funkcje wywolujesz, to powinno dzialac, jak nie to ja juz nieiwm (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 8.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
ja tez nie wiem wlasnie (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) musze do admina napisac bo wyglada ze cos nie tak maja z php (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
admin tu ci nic nie pomoze, nie zawracaj mu glowy (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Ten post edytował nasty_psycho 24.08.2006, 17:14:50 |
|
|
![]()
Post
#13
|
|
Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
a ja wiem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Dekstruktor jest generalnie zawsze wykonywany, ale jest z nim sporo problemow... http://www.zyxist.com/pokaz.php/glupi_blad_php O tu. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Zeby sprawdzic czy sie wlacza zrob po prostu
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 8.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Masz racje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Tylko ze u mnie nie dizala na razie w zaden sposob (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
goffyy destruktor zawsze jest odpalany i nie jest to żadne widzimisie..
Przetestowałem Twój kod i zawsze wyświetla mi 'wychodzę' więc wszystko jest ok.. Sprawdź czy jakieś inne czynniki nie wpływają na to, że tego nie widzisz. Jest tylko jedyna mi znana możliwość aby destruktor nie był odpalony. Tak będzie jeśli przy wyjściu aplikacji wystąpił błąd 'fatal error' podczas wywołania destruktora jednego z obiektów, wtedy żadne inne destruktory jeszcze istniejących obiektów już nie zostaną odpalone. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 8.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
teoretycznie to i ja wiem ze tak powinno byc gorzej ze na tym serwerze co testuje nie jest (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Może to głupie pytanie.. ale masz jakąś instancje tej klasy [stworzony obiekt]?
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 8.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
W ten sposob dziala wszystko poprawnie a wiec to wina php jakas (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
|
|
|
![]()
Post
#20
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Możesz pokazac klasę bazową?
|
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 8.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#22
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Hmm... jakbym nie kombinował i tak zawsze jest ok. Coś musiałes gdzieś namieszać w kodzie użytkującym klasę. Wygląda na to, że coś przestawia Ci zmienną $dirty na false. Upewnij się, że tak się nie dzieje.
Tak na marginesie - możesz smiało wywalić konstruktor z klasy bazowej - nie jest potrzebny (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam. |
|
|
![]()
Post
#23
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 8.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Niestety to jednak php bo ja tylko ta klase do pliku wrzuclem i nie dziala (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) A co do konstruktora to masz racje.
|
|
|
![]()
Post
#24
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 29.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
ja mialem takie jaja z destruktorami kiedy wewnatrz destruktora jednej klasy odwolywalem sie do innej - ktora chyba niedoskonaly jeszcze w tym wzgledzie php pozwolil sobie juz zniszczyc. Pod www nie bylo tego w ogole widac, w shellu dopiero jak zaczalem sprawdzac to pojawil sie nawet segmentation fault. Dlatego popatrz jeszcze w miejsce gdzie ew. tak klasa moze sie niszczyc o ile nie jest to "naturalny" koniec.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 04:39 |