Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> __destruct, zasada dzialania...
goffyy
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
goffyy
post
Post #2





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 8.02.2005

Ostrzeżenie: (0%)
-----


Caly kod klasy:

  1. <?php
  2. class kernel_ApplicationRegistry extends kernel_Registry {
  3. private static $instance;
  4. private $freezefile = "temp/ApplicationRegistry.txt";
  5. private $values = array();
  6. private $dirty = false;
  7.  
  8. private function __construct() {
  9. $this->doReload($this);
  10. }
  11.  
  12. static function instance() {
  13. if (!self::$instance) self::$instance = new self(); 
  14. return self::$instance;
  15. }
  16.  
  17. static function reload() {
  18. self::instance()->doReload();
  19. }
  20.  
  21. private function doReload() {
  22. if (!file_exists($this->freezefile)) return false;
  23. $serialized = file_get_contents($this->freezefile, true);
  24. $array = unserialize($serialized);
  25. if (is_array($array)) {
  26. $array = array_merge($array, $this->values);
  27. $this->values = $array;
  28. return true;
  29. }
  30. return false;
  31. }
  32.  
  33. private function save() {
  34. echo "save";
  35. $frozen = serialize($this->values);
  36. try {
  37. file_put_contents($this->freezefile, $frozen, FILE_USE_INCLUDE_PATH);
  38. } catch (KernelException $e) {
  39. $e->__toString();
  40. }
  41. $this->dirty = false;
  42. }
  43.  
  44. function get($key) {
  45. return $this->values[$key];
  46. }
  47.  
  48. function set($key, $val) {
  49. echo "ustawiam";
  50. $this->dirty = true;
  51. $this->values[$key] = $val;
  52. }
  53.  
  54. function isEmpty() {
  55. return empty(self::instance()->values);
  56. }
  57.  
  58. function __destruct() {
  59. echo "wychodze";
  60. if ($this->dirty) $this->save();
  61. }
  62. }
  63. ?>


Jak cos znajdziesz to daj znac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie
- goffyy   __destruct   24.08.2006, 16:23:32
- - nasty_psycho   tak dziala na wszystkich php5, podaj moze kod ?   24.08.2006, 16:28:10
- - goffyy   Kod jest banalny: [PHP] pobierz, plaintext <?p...   24.08.2006, 16:33:46
- - nasty_psycho   a napisz echo $this->dirty... boc cos mi t...   24.08.2006, 16:42:10
- - goffyy   Probowalem ale nawet jak dasz jakies echo na pocza...   24.08.2006, 16:46:25
- - nasty_psycho   nic nie wyswietla, bo nic niema w tej zmiennej, w ...   24.08.2006, 16:47:40
- - goffyy   Caly kod klasy: [PHP] pobierz, plaintext <?php...   24.08.2006, 16:55:32
- - nasty_psycho   no pewnie ze nic nie zrobi bo nigdze nie przydziel...   24.08.2006, 17:01:24
- - goffyy   Jest ustalana na true tutaj: [PHP] pobierz, plain...   24.08.2006, 17:02:48
- - nasty_psycho   jesli ta funkcje wywolujesz, to powinno dzialac, j...   24.08.2006, 17:06:29
- - goffyy   ja tez nie wiem wlasnie musze do admina napisac b...   24.08.2006, 17:12:12
- - nasty_psycho   admin tu ci nic nie pomoze, nie zawracaj mu glowy   24.08.2006, 17:14:40
- - hwao   a ja wiem Dekstruktor jest generalnie zawsze wyk...   24.08.2006, 18:56:58
- - goffyy   Masz racje Tylko ze u mnie nie dizala na razie w ...   24.08.2006, 19:51:57
- - mariuszn3   goffyy destruktor zawsze jest odpalany i nie jest ...   25.08.2006, 13:20:21
- - goffyy   teoretycznie to i ja wiem ze tak powinno byc gorze...   25.08.2006, 18:03:24
- - splatch   Może to głupie pytanie.. ale masz jakąś instancje ...   25.08.2006, 18:21:47
- - nasty_psycho   a wez w construct napisz : [PHP] pobierz, plaintex...   25.08.2006, 18:22:35
- - goffyy   W ten sposob dziala wszystko poprawnie a wiec to w...   25.08.2006, 20:51:43
- - Cysiaczek   Możesz pokazac klasę bazową?   25.08.2006, 21:49:58
- - goffyy   To jest prosta klasa abstrakcyjna: [PHP] pobierz,...   25.08.2006, 22:20:07
- - Cysiaczek   Hmm... jakbym nie kombinował i tak zawsze jest ok....   25.08.2006, 22:44:26
- - goffyy   Niestety to jednak php bo ja tylko ta klase do pli...   25.08.2006, 23:13:44
- - drizzt73   ja mialem takie jaja z destruktorami kiedy wewnatr...   29.08.2006, 21:49:36


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.10.2025 - 21:00