Créer une classe Contact

20 min PHP 8 — structurer une application (PDO, POO, sessions) Gratuit

Objectif : Créer une classe Contact et instancier un contact en contrôlant les valeurs initiales de ses propriétés.

Un contact ne doit pas rester une simple suite de valeurs dispersées dans l’application. En le représentant par un objet, vous regroupez ses données sous un même nom et vous pouvez transmettre une instance entre les différentes parties du projet. Dans cette leçon, vous créez la classe `Contact` et vérifiez que ses propriétés reçoivent des valeurs initiales explicites.

Les champs du carnet et leurs contraintes ont été définis dans la leçon « Définir le périmètre et les données du carnet ». Ici, vous vous concentrez sur leur représentation en PHP : un identifiant qui peut être absent avant l’enregistrement, un nom obligatoire et un courriel ainsi qu’un téléphone facultatifs.

Créer la classe Contact

Une classe est une définition qui décrit les propriétés et les opérations disponibles pour un type d’objet. Une instance est un objet créé à partir de cette définition. Vous allez placer la classe dans le fichier contractuel `src/Modele/Contact.php` ; le nom `Contact` reprend celui du fichier selon les conventions PHP du projet.

PHP
<?php

declare(strict_types=1);

namespace Carnet\Modele;

final class Contact
{
    public function __construct(
        public ?int $id,
        public string $nom,
        public ?string $courriel,
        public ?string $telephone,
    ) {
    }
}

Le constructeur est la méthode appelée au moment où vous créez une instance. Ses paramètres typés définissent les valeurs à fournir, et la syntaxe utilisée ici crée les propriétés correspondantes et les initialise automatiquement. `?int` et `?string` autorisent une valeur de leur type ou `null` ; l’identifiant est nullable parce qu’un nouveau contact n’a pas encore reçu son identifiant de base de données.

Le mot-clé `public` rend ces propriétés accessibles depuis le code qui utilise l’objet. PHP propose aussi `protected`, accessible dans la classe et ses classes dérivées, et `private`, accessible uniquement dans la classe qui la déclare. Les propriétés sont publiques dans cette première version afin que vous puissiez observer directement leur initialisation ; leur protection et les règles de modification seront traitées dans la leçon suivante.

Créer une instance et vérifier ses valeurs

Pour vérifier le fichier, exécutez depuis la racine du projet le code suivant avec PHP en ligne de commande. Il charge la classe, crée un contact non encore enregistré, puis affiche ses propriétés avec `var_dump`, un outil de diagnostic adapté à un essai local.

Terminal
php -r 'require "src/Modele/Contact.php"; $contact = new Carnet\Modele\Contact(null, "Amina Diallo", "[email protected]", null); var_dump($contact);'
Résultat attendu
object(Carnet\Modele\Contact)#1 (4) {
  ["id"]=>
  NULL
  ["nom"]=>
  string(12) "Amina Diallo"
  ["courriel"]=>
  string(17) "[email protected]"
  ["telephone"]=>
  NULL
}

Le résultat montre une instance de `Carnet\Modele\Contact` avec quatre propriétés initialisées. Les deux valeurs `null` sont acceptées pour l’identifiant et le téléphone, tandis que le nom et le courriel contiennent des chaînes. Si vous passez une valeur incompatible avec un type, PHP signale une erreur de type au lieu de créer silencieusement une propriété contenant une valeur inattendue.

À retenir

  • La classe `Contact` définit la forme d’un contact ; chaque objet créé à partir d’elle est une instance.
  • Le constructeur reçoit les valeurs initiales et les types déclarés contraignent leur forme.
  • L’identifiant nullable permet de représenter un contact avant son insertion en base.
  • Les visibilités `public`, `protected` et `private` déterminent depuis quels endroits les propriétés sont accessibles.

Dans la prochaine leçon, vous protégerez les propriétés et définirez les règles de modification d’un contact.

Envie d'aller plus loin ?

Les cours Enovatic sont gratuits et le resteront. Si vous cherchez un accompagnement encadré, nos formations professionnelles sont animées par les mêmes formateurs.