ayeo
15.04.2008, 11:23:17
Witam!
Czy w PHP obiekt może usunąć się sam?
unset($this); nie działa
Z manuala:
It is not possible to unset $this inside an object method since PHP 5.
A jak można to zrobić inaczej?
MMX3
15.04.2008, 12:00:45
A próbowałeś dopisać destruktor do klasy?
l0ud
15.04.2008, 12:58:12
Z tego co wiem, nie jest to możliwe. Zresztą... do czego byłoby Ci to potrzebne?
ayeo
15.04.2008, 13:08:49
@l0ud, do niczego nie jest mi to w sumie potrzebne. Pytam czysto hipotetycznie. unset($this); usuwa tylko referencję do tego obiektu. :/
Piniek
15.04.2008, 13:29:26
Obiekty usuwaj sie same ;] mozesz to zaobserowawac dodajac desruktor jest on wywolywany kiedy obiekt przestaje istniec wiec jest kasowany ;]
np :
<?php
class A {
function __construct(){
}
function __destruct(){
echo "i już mnie nie ma"; }
}
$new = new A();
//wyświetli
//jestem
//juz mnie nie ma -- co oznacza ze destruktor został wywolany
?>
link
pyro
15.04.2008, 17:35:49
<?php
class klaska
{
public function wyswietl_tekst()
{
echo 'to jest jakistam tekst'; }
}
$a = new klaska();
$a->wyswietl_tekst();
{
echo '<br />nie ma $a<br />'; }
else
{
echo '<br />mimowolnie $a nadal jest ;/ <br />'; }
if(!$a->wyswietl_tekst())
{
echo 'nie mozna wyswietlic tekstu bo widocznie unset zadzialalo :)'; }
// takie cos nie dziala?
?>
bo u mnie unset zadzialalo
ayeo
15.04.2008, 22:14:35
Chodzi mi o usuwanie obiektu z jego wnętrza.
pyro
15.04.2008, 22:31:10
no to desctructorem, inaczej (tak mi sie wydaje) nie da
nevt
15.04.2008, 22:33:01
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.
ayeo
15.04.2008, 23:02:19
@nevt, dziękuję bardzo za wskazówki! Pozdrawiam!
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.