OOP Beginnershandleiding (PHP5)

  1. Inleiding
  2. Object geörienteerd denken
  3. Foute denkwijze
  4. Object georiënteerd programmeren
  5. Visibility
  6. Naamgeving
  7. Constructor __construct()
  8. Voorbeeld: HTML tabel
  9. Inheritance
  10. Voorbeeld: HTML tabel 2 (inheritance)
  11. Static methods en properties
  12. Abstract classes en Interfaces
  13. Magic methods
  14. Slotwoord en referenties
  15. Reacties op deze tutorial

Constructor __construct()

Een constructor is een speciale functie binnen een class die automatisch uitgevoerd wordt zodra de class geïnstantieerd wordt. Op deze manier kunnen we het initialiseren van een class, dus het toekennen van waarden aan properties en bijvoorbeeld het opzetten van de benodigde database verbinding, automatiseren. Met andere woorden, we hoeven geen extra method(s) meer aan te roepen om dit te doen.

In PHP5 wordt de constructor gedefinieerd door de __construct() method. Deze method is een zogenaamde 'magic method' waarover ik later in deze handleiding meer zal vertellen. Voor nu kijken we eerst naar de werking van de constructor.

Definiëren van een constructor
De constructor wordt als volgt binnen een class gedefinieerd:
Code
1
2
3
4
5
6
7
<?php
class User {
  public function 
__construct() {
    
// Hier de code die uitgevoerd moet worden.
  
}
}
?>

Zoals je ziet is het net een normale method, alleen dan een met een speciale functie. Laten we eens naar een realistischer voorbeeld kijken:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
class User {
  private 
$_username;

  public function 
__construct($name) {
    
$this->_username $name;
  }

  public function 
getUsername() {
    return 
$this->_username;
  }
}

$user = new User('jan');
echo 
$user->getUsername();
?>
Code: output
1
jan

We zien dat de setUsername() method vervangen is door de constructor, die dezelfde parameter accepteert. In de procedurele code zien we dat het toekennen van de gebruikersnaam nu direct tijdens het instantiëren van de class gedaan wordt. Het is niet meer nodig om apart setUsername() aan te roepen. Sterker nog, in de veel gevallen kun je hierdoor de vele set*() methods de deur uit gooien, dat scheelt weer behoorlijk wat regels code!

Vereiste properties afdwingen
Naast het feit dat een constructor in veel gevallen regels code kan besparen, is er nog een andere belangrijke situatie waarin de constructor een uitkomst biedt. Stel dat we een class hebben waarbinnen een databaseverbinding nodig is, dan ligt het voor de hand om deze verbinding beschikbaar te hebben zodra de class geïnstantieerd wordt. Zonder deze verbinding zou de class anders niets waard zijn.

Als voorbeeld kijken we naar de class Message_Controller die kan zorgen dat Message objecten van en naar de database gestuurd worden.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php 
class Message_Controller {
    private 
$_db;
    
    public function 
__construct($db) {
        
$this->_db $db;
    }
    
    public function 
storeMessage($message) {
        
// Hier wordt $_db gebruikt om het $message object
        // naar de database te sturen.
    
}
}
?>

De parameter $db waar de constructor om vraagt, zal een instantie van een of andere class moeten zijn die de communicatie naar de database kan afhandelen, bijvoorbeeld PDO.

Een constructor hoeft niet per se een parameter te accepteren, binnen de method kan net zo goed een actie uitgevoerd worden waarvoor geen parameters nodig zijn of er kan zelfs helemaal niets gebeuren. In PHP is het niet verplicht om je class van een constructor te voorzien, in tegenstelling tot andere programmeertalen zoals bijvoorbeeld Java. Maar aangezien wij in PHP programmeren, zullen we hem gebruiken als we hem nodig hebben (en dat zal bijna altijd zijn).

Vorige Volgende