Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: usuwanie obiektu
Forum PHP.pl > Forum > PHP
koodlaty
Mam sobie taki kontener - pole klasy:

  1. <?php
  2. private $CONTAINER = array();
  3. ?>


w polu tym przechowuje w celu późniejszego wykorzystania różne obiekty np:

  1. <?php
  2. if(!isset($this -> CONTAINER['NEW_SYSTEM_USER']))
  3. {
  4. $this -> CONTAINER['NEW_SYSTEM_USER'] = new SYSTEM_USER($this -> DB);
  5. $NEW_SYSTEM_USER = &$this -> CONTAINER['NEW_SYSTEM_USER'];
  6. }else
  7. $NEW_SYSTEM_USER = &$this -> CONTAINER['NEW_SYSTEM_USER'];
  8. ?>


działa świetnie, mam dostęp do tych obiektów gdzie mi się podoba – jest super.

Problem?
Nie potrafię skasować obiektu z „kontenera”. Wszak jest to zwykła tablica... Dlaczego więc nie działa:

  1. <?php
  2. unset($this -> CONTAINER['NEW_SYSTEM_USER']);
  3. ?>


Dlaczego po tej operacji w polu wciąż znajduje się ten obiekt?
xpil
Spróbuj tak:

unset($GLOBALS['_SESSION']['NEW_SYSTEM_USER']);
unset($_SESSION['NEW_SYSTEM_USER']);

Ewentualnie tak:

$_SESSION['NEW_SYSTEM_USER'] = NULL;
unset($_SESSION['NEW_SYSTEM_USER']);

Przykład zaciągnięty z php.net

--
PL
koodlaty
Cytat(xpil @ 29.09.2006, 09:21:35 ) *
Spróbuj tak:

unset($GLOBALS['_SESSION']['NEW_SYSTEM_USER']);
unset($_SESSION['NEW_SYSTEM_USER']);

Ewentualnie tak:

$_SESSION['NEW_SYSTEM_USER'] = NULL;
unset($_SESSION['NEW_SYSTEM_USER']);

Przykład zaciągnięty z php.net



Oj... To się nie uda... To nie jest zmienna sesyjna. Chyba się nie zrozumieliśmy. :-)
wipo
A nie możesz po stostu nadać jej wartości NULL?
Możesz też poszukać na temat usuwania danych z tablicy na php.net
nospor
Cytat
Dlaczego po tej operacji w polu wciąż znajduje się ten obiekt?

O jakim polu mowisz?
Mowisz o:
CONTAINER['NEW_SYSTEM_USER']
czy o:
$NEW_SYSTEM_USER
?

Bo jesli o $NEW_SYSTEM_USER, to nic dziwnego, ze ciagle masz, gdyz do $NEW_SYSTEM_USER przypisales adres obiektu, a nie adres indexu tablicy.
Jesli mowisz o CONTAINER['NEW_SYSTEM_USER'], to powiino byc puste.

Masz przykladzik do testow:
  1. <?php
  2. class test {
  3. }
  4.  
  5. $ar = array('test'=>new test());
  6. print_r($ar);
  7. $zm = &$ar['test'];
  8. print_r($zm);
  9. unset($ar['test']);
  10. print_r($ar);
  11. print_r($zm);
  12. ?>

Jak widac wyczyscilem tablice, ale pod zmienna $zm nadal jest obiekt. (zachowanie prawidlowe)
koodlaty
Cytat(wipo @ 29.09.2006, 12:38:29 ) *
A nie możesz po stostu nadać jej wartości NULL?
Możesz też poszukać na temat usuwania danych z tablicy na php.net


Usuwanie danych z tablicy nie stanowi zwykle problemu smile.gif.
Nadawanie NULL również nie rozwiązuje problemu.

----


Kurcze nospor masz racje!

Teraz zajażyłem...

Jeszcze nie wiem dlaczego ale masz racje. smile.gif
nospor
Cytat
Jeszcze nie wiem dlaczego ale masz racje.
Jak to dlaczego? Bo admin ma zawsze racje smile.gif
Jeśli miales kiedys związek z logiką, to moje odpowiedzi mozesz traktować jako *aksjomaty

*aksjomat - takie cudo, ktorego sie nie dowodzi. Ogólnie jest przyjęte za prawdziwe

winksmiley.jpg
koodlaty
Pewny siebie... Tak, on jest zadziwiająco pewny siebie, mówię wam jak na mój gust aż za bardzo...

smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.