Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][oop] Samoistne usuwanie obiektu w klasie
deirathe
post
Post #1





Grupa: Zarejestrowani
Postów: 426
Pomógł: 32
Dołączył: 24.05.2007

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


Jak mam klase
  1. <?php
  2. class Session
  3. {
  4. public $vars;
  5. public function __construct()
  6. {
  7.  
  8. }
  9. public function AddNameSpace($name)
  10. {
  11. $this->vars[$name] = new Session_NameSpace();
  12. }
  13. public function __set($name,$var)
  14. {
  15. $this->vars[$name] = $var;
  16. }
  17. public function __get($name)
  18. {
  19. return $this->vars[$name];
  20. }
  21. }
  22. class Session_NameSpace
  23. {
  24. public $vars;
  25. public function __get($name)
  26. {
  27. return $this->vars[$name];
  28. }
  29. public function __set($name,$var)
  30. {
  31. $this->vars[$name] = $var;
  32. }
  33. public function AddNameSpace($name)
  34. {
  35. $this->vars[$name] = new Session_NameSpace();
  36. }
  37. public function Destroy()
  38. {
  39. unset($this);
  40. }
  41. }
  42. $s = new Session();
  43. $s->AddNameSpace("data");
  44. $s->data->AddNameSpace("aa");
  45. $s->data->aa->value = "asasa";
  46. $s->data->aa->value2 = "222222asasa";
  47. $s->data->aa->value3 = "33333asasa";
  48. print_r($s);
  49.  
  50. $s->data->Destroy();
  51. print_r($s);
  52. ?>

po wykonaniu powyższego nadal w obiekcie $s pozostaje mi obiekt typu Session_NameSpace w zmiennej data obiektu Session, istnije mozliwosc zeby klasa sama mogla zniszczyc wlasny obiekt?? Jezeli tak to jak to zrobic bo jak widac unset nie dziala a ja dostaje juz nerwow...

Ten post edytował deirathe 13.08.2008, 12:15:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
deirathe
post
Post #2





Grupa: Zarejestrowani
Postów: 426
Pomógł: 32
Dołączył: 24.05.2007

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


Wrzasq nasunął mi pewien pomysł ale skoro jego kod odmawiał posłuszeństwa doszedłem do czegoś takiego:
  1. <?php
  2. echo "<pre>";
  3. print_r($_REQUEST);
  4. class Session
  5. {
  6. public $vars;
  7. public function __construct()
  8. {
  9.  
  10. }
  11. public function AddNameSpace($name)
  12. {
  13. $this->vars[$name] = new Session_NameSpace();
  14. $this->vars[$name]->SetParentNode($this);
  15. $this->vars[$name]->name = $name;
  16. return $this->vars[$name];
  17. }
  18. public function __set($name,$var)
  19. {
  20. $this->vars[$name] = $var;
  21. }
  22. public function __get($name)
  23. {
  24. return $this->vars[$name];
  25. }
  26. public function DestroyChild($v)
  27. {
  28. unset($this->vars[$v]);
  29. }
  30.  
  31. }
  32. class Session_NameSpace
  33. {
  34. public $vars;
  35. public $expire;
  36. public $parent;
  37. public $name;
  38. public function __get($name)
  39. {
  40. return $this->vars[$name];
  41. }
  42. public function __set($name,$var)
  43. {
  44. $this->vars[$name] = $var;
  45. }
  46. public function AddNameSpace($name)
  47. {
  48. $this->vars[$name] = new Session_NameSpace();
  49. $this->vars[$name]->SetParentNode($this);
  50. $this->vars[$name]->name = $name;
  51. return $this->vars[$name];
  52. }
  53. public function SetParentNode($obj)
  54. {
  55. $this->parent = $obj;
  56. }
  57. public function SetExpiration($exp)
  58. {
  59. $this->expire = time()+$exp;
  60. return $this;
  61. }
  62. public function DestroyChild()
  63. {
  64. unset($this->vars[$v]);
  65. }
  66. public function Destroy()
  67. {
  68. $this->parent->DestroyChild($this->name);
  69. }
  70. }
  71. $s = new Session();
  72. $s ->AddNameSpace("data")
  73. ->setExpiration(1000);
  74. $s ->AddNameSpace("sss");
  75. $s->data->AddNameSpace("aa")
  76. ->SetExpiration(20);
  77. $s->data->aa->value = "asasa";
  78. $s->data->aa->value2 = "222222asasa";
  79. $s->data->aa->value3 = "33333asasa";
  80. print_r($s);
  81.  
  82. $s->data->Destroy();
  83. print_r($s);
  84. ?>

Z tym że jest probelem np kiedy wykonuje:
$s->data->aa->Destroy() - nie usuwa namespace drugiego rzedu, jakies pomysly??
Dzieki wszystkim za pomoc
Go to the top of the page
+Quote Post

Posty w temacie


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: 5.10.2025 - 15:51