Static

Intro
Misschien is een 'compare' goed. Dus ziehier:
- Een gewone class variable wordt pas beschikbaar als je de class heb initiated
- Een static variable is zichtbaar, zelfs al is de class niet initiated. Maar met de object variable kan je een static var niet aanroepen, alleen met ons-rare-naam-tekentje " ::".

Praktijk
Wat ik boven heb neergezet, toen ik eigenlijk nu hieronderaan.

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
34
35
<?php
class IKKE {
    public static $ikke = 'Jan';

    public function staticwaarde() {
        return self::$ikke;
    }
}


class JIJ extends IKKE {
    public function mijn_waarde() {
        return parent::$ikke;
    }
}


echo IKKE::$ikke;

newline();
$obj = new IKKE;
echo $obj->staticwaarde();
newline();

echo $obj->ikke;

newline(2);

echo JIJ::$ikke;
newline();

$obj2 = new JIJ;
echo $obj2->mijn_waarde();
newline();

echo $obj2->ikke;
?>

De output van het bovenstaande script:
Jan
Jan
<br />
<b>Notice</b>: Undefined property: IKKE::$ikke in <b>H:\Server\Apache2\htdocs\class\static.php</b> on line <b>46</b><br />


Jan
Jan
<br />
<b>Notice</b>: Undefined property: JIJ::$ikke in <b>H:\Server\Apache2\htdocs\class\static.php</b> on line <b>57</b><br />


Static methodes
Jawel, methodes kunnen ook static zijn.
Kijk maar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
class vis {
    static function blub() {
        echo "Bluuub!";
    }
}

vis::blub();
?>

Dit zal "Bluuub!" outputten.

Let op: Je kan geen non-static functies aanroepen met ::. Als je dat wel doet, gebeurt er niet veel, behalve dat je een gratis E_STRICT error krijgt.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Autoload
  3. Con- & Destructors
  4. Scope (::)
  5. Static
  6. Constants
  7. Type Hinting
  8. Final
  9. Object iteration
  10. Exceptions
  11. Abstract
  12. Conclusie/Einde

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.