Autor Zpráva
Martin02
Profil
Ahoj,

Chci se zeptat, jestli je nějak možné, aby když budu nastavovat nějakou vlastnost objektu, se vždy zavolala nějaká metoda (setter), ve které bych věděl, kdo (jaká třída / objekt) chce danou proměnnou nastavit?

Děkuji
Keeehi
Profil
Martin02:
Třída by měla být na svém okolí nezávislá, proto nepotřebuje vědět kdo ji volá a proto to nezjistíš. Pokud má mít nějakou závislost, můžeš ji té třídě předat třeba v konstrutoru new Trida($this);. Te třída s tím může pracovat, ale nedokáže zajistit ani zjistit, zda ji opravdu volalo to, co jsi ji předal.

Technicky se to udělat dá, ale používá se to ve speciálních případech. Tady to spíš vypadá na nějaký špatný návrh.
Corwin
Profil
nadefinovaná metoda __set() a v ní debug_backtrace(). také ale netuším nějaký hlubší význam... pro nějaké logování a ladění super-složité aplikace ano, pro pro běžné využití to fakt není moc dobrý nápad...

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: