![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 275 Pomógł: 32 Dołączył: 17.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
potrzebuję, żeby moja statyczna metoda zwracała referencję do statycznego atrybutu, który jest tablicą, a konkretnie elementu tablicy, który znowu jest obiektem innej klasy. Obiekt ten chcę usunąć, wywołując destruktor. Tyle wstępu, teraz trochę kodu:
Niby obiekty zwracane są zawsze jako referencje, ale w wersji bez "&" też nie podziała, dlatego na próbę dopisałem. Wiem też, że nie przeszadza to, że atrybut wykobot::$channels jest prywatny, ma tak działać. Jeżeli w wykobot::getChannelByName przed returnem wstawimy unset($channel['obj']) to podziała jak trzeba, tj jedyny output jaki dostaniemy to "destruktor!". Ten post edytował varez 9.01.2011, 10:51:11 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 51 Dołączył: 4.02.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Obiekty zawsze są zwracana i przekazywane jako parametry przez referencję. Funkcja unset usuwa referencję do zmiennej, nie samą zmienną. Zmienna zostanie usunięta przez gc gdy wszystkie referencje do danej zmiennej zostaną usunięte lub wypadną poza zakres. Zrób sobie metodę wykobot::removeChannel($name).
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 275 Pomógł: 32 Dołączył: 17.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
to jak to zrobic zeby bylo dobrze?
removeChannel mnie nie ratuje, bo ja potrzebuje tego obiektu właśnie, bo będzie na nim sporo operacji, unset był tylko dla testu, że posiadam faktycznie obiekt pod tą zmienną, a nie jakąś jego kopię czy coś. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie będziesz miał żadnej kopii. Obiekty w PHP5 przekazywane są przez referencje i nie potrzeba do tego żadnych &
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 11:52 |