Static methods en properties
Gebruik van het 'static' keyword zorgt ervoor dat betreffende methods of properties gebruikt kunnen worden zonder dat er een instantie van de class aangemaakt hoeft te worden. Omdat de class niet geïnstantieerd wordt, is het ook niet mogelijk om gebruik te maken van $this, aangezien deze variabele naar het huidige object verwijst. Static properties behoren dan ook tot de class zelf en niet tot een object van die class. Om properties of methods van binnenuit de class te benaderen, gebruiken we het 'self' keyword.
Een voorbeeld waarin het gebruik duidelijk wordt is deze Counter class:
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
[code]<?php
class Counter {
private static $_count = 0;
public function __construct() {
self::$_count++;
}
public static function getCount() {
return self::$_count;
}
}
echo Counter::getCount().'<br />';
$x = new Counter;
echo Counter::getCount().'<br />';
$y = new Counter;
echo Counter::getCount().'<br />';
$z = new Counter;
echo Counter::getCount().'<br />';
?>
[code=output]
1
2
3
We zien een static property $_count die zoals gezegd dus tot de class zelf behoort en niet tot een object van die class. Verder zien we een constructor die met behulp van het 'self' keyword telkens de waarde van $_count met 1 ophoogt zodra de class geïnstantieerd wordt. Tenslote zien we nog een static method getCount() die de huidige waarde van $_count terug geeft.
In de procedurele code wordt de Counter class tot driemaal toe geïnstantieerd, resulterende in een verhoging van $_count zoals in de output te zien is. Verder is te zien dat public static gedeclareerde members of properties ook van buiten de class benaderbaar zijn, ook zonder dat de class ooit geïnstantieerd is geweest.
Inhoudsopgave
- Inleiding
- Object geörienteerd denken
- Foute denkwijze
- Object georiënteerd programmeren
- Visibility
- Naamgeving
- Constructor __construct()
- Voorbeeld: HTML tabel
- Inheritance
- Static methods en properties
- Abstract classes en Interfaces
- Slotwoord en referenties