__get()

Precies bijhouden welke variabelen er worden opgevraagd? Definieer een method genaamd __get($key). Als argument ($key) krijgt deze de naam van de variabele die je uit wilt lezen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo $object->variabele1001;
kan dan worden gezien als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo $object->__get(variabele1001);
.

Waar je vervolgens de waarde vandaan halt mag je helemaal zelf weten! Dit kan dus een array zijn, $this->waarden[$key], of een echt bestaande variabele van het object, $this->$key, of zelfs databaseuitvoer!
Uiteraard geef je de waarde vervolgens terug via return.

[voorbeeld 1]
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
29
30
31
32
33
<?php
class Voorbeeld {

   /*
    * deze variabele mogen we niet van buitenaf,
    * berijken maar wel via klassen die
    * voortborduren op dit voorbeeld
    */

   protected $waarden = array();

  
   public function __construct()
   {


      $this->waarden['iets'] = 'aap';

   }

  
   public function __get($key)
   {

      echo "debug: variabele '$key' werd opgevraagd\n";
      return isset($this->waarden[$key]) ? $this->waarden[$key] : 'bestaat niet!';
   }
}


$object = new Voorbeeld();
echo $object->iets;
//geeft 'aap'

echo $object->fictieveVariabele;
//geeft 'bestaat niet!'

?>


Wat je ook meteen kunt zien in [voorbeeld 1] is dat je ook zelf kan bepalen wat je terug geeft waneer de variabele niet bestaat. Soms is het nuttig om in plaats van een foutmelding een lege array terug te geven, of juist meteen een fatal error. Dat is puur afhankelijk van de functie van de klasse.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Het verschil
  2. __get()
  3. __set()
  4. __isset() & __unset()
  5. __call()
  6. Dingen om rekening mee te houden
  7. Mogelijke toepassing

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.