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 (php)
PHP script in nieuw venster Selecteer het PHP script
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 (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
<?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 (php)
PHP script in nieuw venster Selecteer het PHP script
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.

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 (php)
PHP script in nieuw venster Selecteer het PHP script
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).

« Lees de omschrijving en reacties

Inhoudsopgave

  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. Static methods en properties
  11. Abstract classes en Interfaces
  12. Slotwoord en referenties

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.