Stel ik doe dit:
Dan bestaat deze instantie van MyObj nog in $b (de destructor wordt niet aangeroepen, etc)
Nu heb ik een class die een record uit de database bevat. Instanties hiervan wilde ik eigenlijk bijhouden in een 'pool'. Komt er een nieuw object bij dan wordt deze bovenaan de pool geplaatst. Wordt er een oud object gebruikt (1 van de functies of velden wordt gebruikt), dan verschuift deze ook naar boven in de pool. Als je even wat bezig bent heb je natuurlijk heel veel objecten, dus wil ik het object onderaan de pool (langst niet gebruikt) weggooien. Als deze informatie weer nodig is wordt die automagisch weer uit de database getrokken.
Ik wil echter natuurlijk geen object weggooien dat nog ergens gebruikt wordt, dus mag ik alleen het langst niet gebruikte object weggooien die ook een reference count van 1 heeft (want de pool houd het object natuurlijk ook bij). De grote vraag is, hoe kan ik (het pool object) nu weten of een ander object een reference count van 1 heeft? (Kon het zelf niet vinden). Het kan natuurlijk met zo'n constructie (dit werkt natuurlijk niet echt zo in mijn code)
Maar hier wil ik eigenlijk niet aan.
Iemand ideeen?
PHP:
1
2
3
| $a = new MyObj; $b = $a; $a = null; |
Dan bestaat deze instantie van MyObj nog in $b (de destructor wordt niet aangeroepen, etc)
Nu heb ik een class die een record uit de database bevat. Instanties hiervan wilde ik eigenlijk bijhouden in een 'pool'. Komt er een nieuw object bij dan wordt deze bovenaan de pool geplaatst. Wordt er een oud object gebruikt (1 van de functies of velden wordt gebruikt), dan verschuift deze ook naar boven in de pool. Als je even wat bezig bent heb je natuurlijk heel veel objecten, dus wil ik het object onderaan de pool (langst niet gebruikt) weggooien. Als deze informatie weer nodig is wordt die automagisch weer uit de database getrokken.
Ik wil echter natuurlijk geen object weggooien dat nog ergens gebruikt wordt, dus mag ik alleen het langst niet gebruikte object weggooien die ook een reference count van 1 heeft (want de pool houd het object natuurlijk ook bij). De grote vraag is, hoe kan ik (het pool object) nu weten of een ander object een reference count van 1 heeft? (Kon het zelf niet vinden). Het kan natuurlijk met zo'n constructie (dit werkt natuurlijk niet echt zo in mijn code)
PHP:
1
2
3
| $a = new MyObj; $b = $a->UpYourReferenceCountAndReturnYoSelf(); ... |
Maar hier wil ik eigenlijk niet aan.
Iemand ideeen?