References als resultaat van een functie

Zo krijg je een reference naar een object vanuit een functie

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?
    $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.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Waarom deze tutorial:
  2. Voorbereiding
  3. Wat is het nut van references
  4. (heen en weer) Kopieeren van een objecten
  5. References in het algemeen
  6. References als argument van een functie
  7. References als resultaat van een functie
  8. Samenvatting

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.