Autor Zpráva
koudi
Profil
Dá se napsat třídě taková metoda, která zruší danou instanci? Nechci použít unset($object), rád bych použil něco jako $object->destroy(). Při rušení objektu bych totiž rád proved ještě nějaké operace.

Ano, mohl bych použít __destruct() a obyčejné unset, ale rád bych to dělal způsobem popsaným výše :).
ernesto
Profil *
no a co je teda špatnýho na
__destruct()
{
// kód kterej chceš provést
}

?
medden
Profil *
Možno keby si napísal prečo to chceš takto spraviť tak by sme ti vedeli lepšie poradiť
ernesto
Profil *
musíš to udělat buď tak jak sem napsal (objekt sám sebe svojí metodou nemůže zrušit), pak prostě dáš do kódu
$_rusena_instance=NULL
a je to
(ještě podotknu, že sem vyvěštil, že ti de o PHP5)
koudi
Profil
no a co je teda špatnýho na
Nic, ale prostě se ptám, jestli i jiná možnost.

objekt sám sebe svojí metodou nemůže zrušit
Může, ale neni to nic moc.

	


class test{

public function delete(self &$object){
$object = null;
}

}

$test = new test();
$test->delete($test);


ještě podotknu, že sem vyvěštil, že ti de o PHP5
Jelikož php4 destruktory nemá, tak máš pravdu ;-)
ernesto
Profil *
no vidíš, jak to máš zmáknutý, tahle možnost mě sice napadla, ale humpolácky sem jí zavrhnul bez testu :D
líp to ale fakt asi už nepude - leda že by sis udělal nějakou jinou classu speciálně na ničení objektů a podle toho jakou instanci bys dal nějaký její metodě bys provedl nějakej ten kód. jediná rádoby výhoda by byla v tom, že bys měl všechny fake destruktory pokupě a třeba bys tam mohl mít pokupě i věci ci se stanou po destrukci a ne jenom před ní.
a na unset pozor, ale to ty určitě víš
koudi
Profil
no vidíš, jak to máš zmáknutý, tahle možnost mě sice napadla, ale humpolácky sem jí zavrhnul bez testu :D
Byla v manuálu. Ale moc se mi nelíbí.

Ale to je fuk, prostě použiju $obj = null a bude.

Ale jedna věc mě překvapila. Když zavolám destruktor ($obj->__destruct()), tak to co je v něm, tak se sice provede, ale objekt se nezruší. V zásadě je to jasný, ale nečekal sem to :)
ernesto
Profil *
mě PHPko vobčas taky něčim překvapí, sem zvědavej jak budeme překvapený až bude ostrá šestka
H13
Profil
Jsem oop začátečník a zajímalo by mě, proč se ruší instance...prostě jsem na to ještě v žádným příkladu nenarazil, díky
souki
Profil
H13
třeba když máš objekt uložený v session a používáš pro přihlášení uživatele... při odhlášení ho zrušíš
ernesto
Profil *
no já nevim, ale pokud máš v session objekt v session, tak při běhu skriptu je to OK, ale pak bys ho měl stejně před skončením skriptu serializovat. no to je fuk, ale lepší příklad je spíš ten, že pokud děláš nějakou složitou aplikaci, kterou používá hodně lidí a v ní sou velký objekty, tak je dost rozumný objekt kterej už nepoužíváš zrušit. stejně tak uvolňovat všechny DB resources atd. zrychlení je pak víc než znatelný.
souki
Profil
pak bys ho měl stejně před skončením skriptu serializovat
záleží na nastavení serveru. Mě se např objekty v session serializují samy... jak kdy..
ernesto
Profil *
je to možný, tak do hloubky sem se o to nezajímal, v práci máme beztak na všech projektech svojí session. každopádně při použití vestavěný session na freehostingu (a nejenom co se týče session) nespolíhat se na nastavení php.ini, ale všecho si důkladně ošetřit. může to bejt sice zbytečný, ale pokud nemáš pod kontrolou ten server, tak ti nikdo nezaručí, že admin ze dne na den bez varování něco nepřenastaví.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0