References als resultaat van een functie
Zo krijg je een reference naar een object vanuit een functie
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?
$clienten = array(new Client("Pholeron", 100), new Client("PHPHulp.nl", 75), ...);
// Zoek een client op in de array $clienten op basis van de naam
function &getClient($name) // Let op het & teken
{
for($i = 0; $i < sizeof($clienten); $i++)
{
if(strcasecmp($clienten[$i]->getName(), $name) === 0)
{
return $clienten[$i]; // Geeft nu een REFERENCE!! van het object terug
}
}
return null; // Geef een NULL terug!!, wordt in dit voorbeeld niet afgevangen.
}
// Een functie om 20 euro aan het saldo van een client toe te voegen
function addTwentyEuro(&$client)
{
$client->setCash($client->getCash() + 20);
print($client->toString()); // Print #1
}
// Nu willen we aan de client 'PHPHulp.nl' 20 euro toevoegen..
$client = &getClient("PHPHulp.nl"); // Zoek de client op (let op het & teken)
addTwentyEuro($client); // Voeg 20 euro toe aan het saldo
?>
$clienten = array(new Client("Pholeron", 100), new Client("PHPHulp.nl", 75), ...);
// Zoek een client op in de array $clienten op basis van de naam
function &getClient($name) // Let op het & teken
{
for($i = 0; $i < sizeof($clienten); $i++)
{
if(strcasecmp($clienten[$i]->getName(), $name) === 0)
{
return $clienten[$i]; // Geeft nu een REFERENCE!! van het object terug
}
}
return null; // Geef een NULL terug!!, wordt in dit voorbeeld niet afgevangen.
}
// Een functie om 20 euro aan het saldo van een client toe te voegen
function addTwentyEuro(&$client)
{
$client->setCash($client->getCash() + 20);
print($client->toString()); // Print #1
}
// Nu willen we aan de client 'PHPHulp.nl' 20 euro toevoegen..
$client = &getClient("PHPHulp.nl"); // Zoek de client op (let op het & teken)
addTwentyEuro($client); // Voeg 20 euro toe aan het saldo
?>
Door een & voor de functie, Én voor de functie aanroep te zetten, krijg je een reference terug uit de functie.
Zet je geen & voor de aanroep, dan krijg je een 'normale' kopie.
Zet je geen & voor de functie (maar wel voor de aanroep), dan krijg je (bij mijn PHP engine) een waarschuwing.
« vorige pagina | volgende pagina »
Inhoudsopgave
- Waarom deze tutorial:
- Voorbereiding
- Wat is het nut van references
- (heen en weer) Kopieeren van een objecten
- References in het algemeen
- References als argument van een functie
- References als resultaat van een functie
- Samenvatting