Constructeur PHP
Introduction à la programmation orientée objet en PHP
Méthode constructeur
La méthode constructeur ou plus simplement le constructeur d'une classe est une méthode qui va être appelée (exécutée) automatiquement à chaque fois qu'on va instancier une classe.
Le constructeur va ainsi nous permettre d'initialiser des propriétés dès la création d'un objet, ce qui va pouvoir être très intéressant dans de nombreuses situations.
Actuellement, lorsque l'on créé un nouvel objet à partir de la classe Utilisateur, il faut appeler les méthodes setNom() et setPasse() pour définir les valeurs de nos propriétés $user_name et $user_pass, comme ceci $mimi->setNom('Mi'); et $mimi->setPasse(123456); ce qui est loin d'être optimal.
Ici, on aimerait idéalement pouvoir définir immédiatement la valeur de nos deux propriétés lors de la création de l'objet (en récupérant en pratique les valeurs passées par l'utilisateur). Pour cela, on va pouvoir utiliser un constructeur.
Le fichier classes/utilisateur.class.php<?php
class Utilisateur {
// Propriétés (attributs)
private $user_name;
private $user_pass;
public function __construct($n, $p){
$this->user_name = $n;
$this->user_pass = $p;
}
public function getNom(){
// Pseudo-variable $this pour faire référence à l'objet courant
return $this->user_name;
}
public function setNom($new_user_name){
$this->user_name = $new_user_name;
}
public function setPasse($new_user_pass){
$this->user_pass = $new_user_pass;
}
}
Fichier principal
Fichier index.php<!DOCTYPE html>
<html lang="fr">
<head>
<title>POO PHP</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/mesStyles.css">
</head>
<body>
<h1>Inscription</h1>
<?php
require 'classes/utilisateur.class.php';
// nouvelles instances de notre classe Utilisateur
$Utilisateur1 = new Utilisateur('Mimi', 123456);
$Utilisateur2 = new Utilisateur('Fifi', 'abcdef');
echo $Utilisateur1->getNom().'<br>';
echo $Utilisateur2->getNom().'<br>';
?>
</body>
</html>
Lors de l'instanciation de notre classe Utilisateur, le PHP va automatiquement rechercher une méthode __construct() dans la classe à instancier et exécuter cette méthode si elle est trouvée.
Exercice
Même exercice que précédemment mais en utilisant le constructeur de classe comme ceci : -> Voir cet exemple Easy-MicroFormulaire HTML
L'objectif est de récupérer les données d'un formulaire afin de créer une nouvelle instance d'utilisateur.
Fichier index.php<!DOCTYPE html>
<html lang="fr">
<head>
<title>POO PHP</title>
<meta charset="utf-8">
<meta name="viewport" content="">
<link rel="stylesheet" href="css/mesStyles.css">
</head>
<body>
<h1>Inscription</h1>
<form action='traitement_inscription.php' method='post'>
<label for='nom'>Nom d'utilisateur : </label>
<input type='text' name='nom' id='nom'><br>
<label for='pass'>Choisissez un mot de passe.</label>
<input type='password' name='pass' id='pass'><br>
<input type='submit' value='Envoyer'>
</form>
</body>
</html>
Le fichier traitement_inscription.php
On admet qu'une vérification des données reçues est déjà réalisée en Javascript (preg_match() + filtres)
<?php
require 'classes/utilisateur.class.php';
// on pourrais faire ici le stockage des données en base de données
$Utilisateur1 = new Utilisateur($_POST['nom'], $_POST['pass']);
// affiche le nom d'un utilisateur
echo $Utilisateur1 -> getNom().'<br>';
?>
-> Voir cet exemple de formulaire Easy-Micro