Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] usuwanie obiektu
ayeo
post 15.04.2008, 11:23:17
Post #1





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Witam!
Czy w PHP obiekt może usunąć się sam?
unset($this); nie działa biggrin.gif

Z manuala:
It is not possible to unset $this inside an object method since PHP 5.

A jak można to zrobić inaczej?

Ten post edytował ayeo 15.04.2008, 11:45:39


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
MMX3
post 15.04.2008, 12:00:45
Post #2





Grupa: Zarejestrowani
Postów: 155
Pomógł: 9
Dołączył: 26.01.2004
Skąd: Poznań

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


A próbowałeś dopisać destruktor do klasy?


--------------------
Go to the top of the page
+Quote Post
l0ud
post 15.04.2008, 12:58:12
Post #3





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Z tego co wiem, nie jest to możliwe. Zresztą... do czego byłoby Ci to potrzebne?


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
ayeo
post 15.04.2008, 13:08:49
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


@l0ud, do niczego nie jest mi to w sumie potrzebne. Pytam czysto hipotetycznie. unset($this); usuwa tylko referencję do tego obiektu. :/


--------------------
Go to the top of the page
+Quote Post
Piniek
post 15.04.2008, 13:29:26
Post #5





Grupa: Przyjaciele php.pl
Postów: 463
Pomógł: 49
Dołączył: 27.12.2007
Skąd: Warszawa

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


Obiekty usuwaj sie same ;] mozesz to zaobserowawac dodajac desruktor jest on wywolywany kiedy obiekt przestaje istniec wiec jest kasowany ;]
np :
  1. <?php
  2. class A {
  3. function __construct(){
  4. echo"jestem <br/>";
  5. }
  6. function __destruct(){
  7. echo "i już mnie nie ma";
  8. }
  9. }
  10. $new = new A();
  11. //wyświetli
  12. //jestem
  13. //juz mnie nie ma -- co oznacza ze destruktor został wywolany
  14. ?>

link

Ten post edytował Piniek 15.04.2008, 13:33:34


--------------------
Go to the top of the page
+Quote Post
pyro
post 15.04.2008, 17:35:49
Post #6





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


  1. <?php
  2.  
  3. class klaska
  4. {
  5.  
  6. public function wyswietl_tekst()
  7. {
  8. echo 'to jest jakistam tekst';
  9. } 
  10.  
  11. }
  12.  
  13. $a = new klaska();
  14. $a->wyswietl_tekst();
  15. unset($a);
  16.  
  17. if(!isset($a))
  18. {
  19. echo '<br />nie ma $a<br />'; 
  20. }
  21. else
  22. {
  23. echo '<br />mimowolnie $a nadal jest ;/ <br />';
  24. }
  25.  
  26. if(!$a->wyswietl_tekst())
  27. {
  28. echo 'nie mozna wyswietlic tekstu bo widocznie unset zadzialalo :)';
  29. }
  30.  
  31. // takie cos nie dziala?
  32.  
  33. ?>


bo u mnie unset zadzialalo tongue.gif


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
ayeo
post 15.04.2008, 22:14:35
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Chodzi mi o usuwanie obiektu z jego wnętrza.


--------------------
Go to the top of the page
+Quote Post
pyro
post 15.04.2008, 22:31:10
Post #8





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


no to desctructorem, inaczej (tak mi sie wydaje) nie da


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
nevt
post 15.04.2008, 22:33:01
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


przy pewnych ograniczeniach - da się. zakładając, że wszystkie instancje obiektu przypisane są do jakichś zmiennych globalnych (a to częsta sytuacja), w metodzie kasującej można zastosować procedurę:
1. pobrać nazwę własnej klasy.
2. przeszukać tablicę globals i wyłuskać wszystkie wpisy które są instancjami naszej klasy.
3. przelecieć się po wszystkich pasujących funkcją unset()
4. po skasowaniu ostatniejinstancji obiekt zostaje zniszczony (wywołuje się destruktor - sprawdzałem).

powodzenia.


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
ayeo
post 15.04.2008, 23:02:19
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


@nevt, dziękuję bardzo za wskazówki! Pozdrawiam!


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 09:06