Final

Intro
Final vind ik wel een leuke. Want met Final mag je aangeven dat een functie, of zelfs de hele class als het ware 'klaar' is. Dat betekent in php in het geval van een functie dat de functie in de 'child' classes niet meer kan worden hergedefineerd, want dan krijg je een E_FATAL error. In het geval van een final class, kan de class geen 'child' classes meer hebben.

Praktijk
Voorbeeld

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
36
37
38
39
40
41
42
43
44
<?php
class Dier {
    public $naam;
    public $type;

    function
Dier($naam = 'Dier', $soort = 'Dier') {
        $this->naam = $naam;
        $this->type = $soort;
    }


    final function beweging($beweging) {
        echo "Dier beweegt:";
        newline();
        echo "Beweging: ".$beweging;
        newline();
    }

    function
plassen() { //sorry, maar het een voorbeeld.. mmm?
        echo "{$this->type} \"{$this->naam}\" plast";
        newline(2);
    }
}


class Hond extends Dier {

    function
Hond($naam = 'Luna', $soort = 'Hond') {
        $this->Dier($naam, $soort);
    }

    function
plassen() {
        $this->beweging('Poot opheffen');
        echo "{$this->type} \"{$this->naam}\" plast";
        newline(2);
    }


    //dit gaat niet en geeft een E_FATAL:
    /*
    function beweging ($beweging) {
        echo "Hond beweegt: {$beweging}";
        newline();
    }
    */

}
?>


Dit gaat niet werken, want beweging is al Final:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

class vreemd_dier extends Dier {
    function
beweging ($beweging) {
        echo "Zou gaan bewegen: {$beweging}";
        newline();
        echo "Maar doet het toch niet.";
    }
}

?>

Voorbeeld 2:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
final class school {
    function
school() {
        echo "School";
    }
}

?>

Dit gaat niet werken, omdat school al de final klasse is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
class bom extends school {
    public $bomba_type;
    function
bom($type = 'TNT') {
        $this->bomba_type = $type;
    }
}

?>

« 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.