Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> agregacja a usuwanie obiektu
dtb
post
Post #1





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


mam przykładowo taki kod:
  1. <?php
  2.  
  3. class A {
  4. private $foo;
  5. public function assign($obj) {
  6. $this->foo = $obj;
  7. }
  8. public function __destruct() {
  9. echo "die A\n";
  10. }
  11. }
  12. class B {
  13. public function __destruct() {
  14. echo "die B\n";
  15. }
  16. }
  17.  
  18. $a = new A;
  19. $b = new B;
  20. $a->assign($b);
  21. unset($b);
  22. echo "---\n";
  23.  
  24. ?>

spodziewałem się takiego efektu:
Cytat
die B
---
die A

czyli unset niszczy $b, następnie wyświetlane są "---" i wraz z końcem skryptu usuwany jest obiekt $a.
tymczasem wynik jest taki:
Cytat
---
die A
die B

unset w ogóle nie działa.
może mi ktoś powiedzieć jak usunąć obiekt $b? z góry dziękuje za odpowiedź.

EDIT: $foo musi być prywatna

Ten post edytował dtb 15.02.2010, 19:25:26
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dtb
post
Post #2





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


ech... niepotrzebnie zaczynałem dyskusję.

przyczepiłem się tego, bo myślałem, że to proponowane przez Ciebie rozwiązanie (mój błąd - źle przeczytałem):
Kod
$a->unsetB();
unset($b);

takie rozwiązanie oczywiście nie pasuje, bo załóżmy że mam więcej obiektów wrzuconych do $a:
Kod
$a->assign($button1 = new B);
$a->assign($button2 = new B);
$a->assign($button3 = new B);
$a->assign($foo = new B);

ich liczba nie jest określona. jak bym chciał usunąć obiekt $button3, to nie mogę przecież utworzyć metody unsetButton3 (i tak dla każdej potencjalnej nazwy zmiennej). to było by bez sensu.

natomiast zaproponowany przez ciebie system zarządzania obiektami nie jest rozwiązaniem jakiego oczekuje, ponieważ nie chodzi mi o kolejność wykonywania destruktorów, a jedynie o możliwość usunięcia pojedynczej instancji wraz z wszystkimi jej referencjami w dowolnym miejscu w kodzie. widać źle zrozumiałeś moje intencje na samym początku.

Ten post edytował dtb 22.02.2010, 01:19:15
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: 4.10.2025 - 11:11