PHP reference
Ik zit momenteel met een vraag, nadat ik veel in c++ heb geprogrammeerd ben ik steeds meer OOP gaan werken. Nu heb ik een behoorlijk systeem gemaakt en het is erg belangrijk dat alles aan de hand van references gaat zodat er geen verouderde objecten in het systeem zitten.
Nu is mijn vraag, als ik een functie declareer als volgt:
Moet ik dan ook als ik hem naar een variabele in de classe wil kopieeren dit doen
of can het gewoon zo
Groetjes,
Marcel
Gewijzigd op 01/01/1970 01:00:00 door Cyberboy fdsafds
Ter vergelijking: als je @ ergens voorzet, wil het zeggen dat het script moet verder verwerken en fouten moet negeren. Zo kan je een fout in een if-then-else steken en als het fout gaat naar je else ofzo verwijzen.
in plaats van een waarde mee te geven aan de functie geef je een pointer mee. De variabele binnen de functie zal dan de zelfde zijn als de variabele buiten de functie.
Alles wat je binnen de functie verandert aan de variabele zal ook buiten de functie effect hebben.
Voorbeeldje:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?
$i=5;
byRef(&$i);
echo $i; // geeft 6
function byRef(&$getal)
{
$getal++;
}
?>
$i=5;
byRef(&$i);
echo $i; // geeft 6
function byRef(&$getal)
{
$getal++;
}
?>
tov.
@ Marcel: geen idee eigenlijk, maar ik zal het eens uitzoeken.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
Bijvoorbeeld:
Nu verwijzen $obj en $ref naar hetzelfe object, dus als ik in een van de 2 objecten een interne variabele wijzig ziet het andere object het ook. En zo voorkom je oude waarden in objecten.
Nu, objecten zijn altijd referenties.
$b zal geen kopie zijn van $a. Beide variabelen wijzen sowieso naar het zelfde object, dus in dit geval is de & niet nodig.
Bij 'function copyReference(&$var)' zal de $var binnen de functie verwijzen naar dat argument wat je hebt meegegeven. $var binnen de functie is dus gelijk aan de variabele die je als argument hebt meegegeven. Wil je die variabele aan een property in het object koppelen (en niet kopiëren) en het is geen resource of object, dan zal je inderdaad nog een & moeten gebruiken:
Code (php)
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
Wat is het grote nut van references in php dan, is dat alleen dat een variabele buiten de functie dan gelijk is aan de variabele binnen de functie?
Dit is mijn situatie, ik heb een master object class hierin worden alle objecten geladen. Deze worden buiten de master object classe aangemaakt.
Hierdoor kunnen alle objecten onderling communiceren met de objecten die in het master object zijn geladen.
De objecten mogen buiten het master object ook worden aangepast, dus variabelen etc etc.
Het master object moet dan dus ook die aangepaste waarden hebben.
Is nu een reference nodig of niet?
http://be.php.net/str_replace
Als je een 4e parameter zet, krijg je een count weer.
Er zullen nog wel betere voorbeelden zijn.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay