Autor Zpráva
Qlor
Profil *
Dobrý den,
potřeboval bych zavolat __destruct() hned, jak doběhne poslední funkce třídy, která byla zavolána. Volám jednu funkci třeba 3x, pak 2x další atd, potřebuji ale provést script, když doběhne poslední zavolaná funkce té třídy. Momentálně se destruct volá až na konci stránky, což je pro mě značně nevýhodné. Snad jste mě pochopili. Děkuji
joe
Profil
Nepochopili, proč si nevytvoříš nějakou metodu a tu si nezavoláš kdy potřebuješ?
Qlor
Profil *
Nemusí to být zrovna destruct, ale potřebuji zavolat (něco) automaticky.
joe
Profil
Tím chceš říct, že máš nějaký kód, o kterém nevíš kdy a jak náhodně se provede? Nebo snad nejsi schopný zjistit, kdy naposledy doběhne poslední zavolaná funkce? Co nějaké počítadlo? Nechápu k čemu je to dobré.
Qlor
Profil *
Prostě vytvořím třídu a pak začnu volat její funkce, vždy jich volám různý počet, některé vícekrát a po doběhnutí poslední funkce chci, aby se ještě něco stalo. Nechci za každou poslední funkci přidávat další funkci, která to obstará.
Nox
Profil
Qlor: A jak má interpret či kód či kdokoli vědět, že už pak nebudeš chtít volat žádnou další?
Qlor
Profil *
No, to je právě ten problém
final
Profil *
keď to nevieš tak načo sem dávaš takú otázku?
inak načo voláš tú istú funkciu viac krát?a reálny príklad akú potrebuješ funkciu aby išla na konci?
Qlor
Profil *
Už jsem zjistil, že to tak asi nepůjde, ale potřeboval bych ještě poradit
$form = new form();
...
Jak udělám aby echo $form; vypsalo nějaký text, který si určím v třídě? Děkuji.
ShiraNai7
Profil
Qlor:
<?php

class form
{

    ...

    public function __toString()
    {
        return 'ahoj';
    }

    ...


}


$form = new form;
echo $form; // vypise ahoj

Jen poznámka - __toString() funguje "spolehlivě" až od PHP 5.2.0. V přechozích verzích funguje pouze v přímé kombinaci s print nebo echo.
Qlor
Profil *
ShiraNai7:
Paráda, děkuji, ale po echo $form; už se nevypisuje žádný text, stránka skončí jako kdyby tam byl exit;


Omlouvám se, něměl jsem zapnuté chyby..

Catchable fatal error: Method form::__toString() must return a string value



Vyřešeno, měl jsem místo return echo..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: