Les constructeurs
Le rôle des constructeurs
Les constructeurs définissent comment les objets doivent être crée. Il existe trois (3) types de constructeurs qui sont :
- Les constructeurs sans arguments
- Les constructeurs avec arguments fixes
- Les constructeurs avec arguments dynamiques (variables)
Les constructeurs sans arguments
La syntaxe :
class NomDeLaClasse
{
public function __construct( )
{
//la logique
}
}
Exemple :
class Produit
{
public function __construct( )
{
$this->prix = 0;
}
}
Utilisation :
new Produit();
Les constructeurs avec arguments fixes
La syntaxe :
class NomDeLaClasse
{
public function __construct( liste des arguments )
{
//la logique
}
}
Exemple :
class Produit
{
public function __construct( string $designation, float $prix, string $ref)
{
$this->designation = $designation;
$this->prix = $prix;
$this->ref = $ref;
}
}
Dans ce cas de constructeur, l’ordre des arguments est important et doit être respecté.
Par exemple:
new Produit("SamSung Galaxy A16", "SM-A15",150000);
Cet exemple provoquera une erreur car l’ordre n’est pas respecté. Par contre
new Produit("SamSung Galaxy A16",150000, "SM-A15");
Fonctionnera.
Les constructeurs avec arguments dynamiques
class NomDeLaClasse
{
public function __construct( array $nomDuArray )
{
//logique
}
}
Exemple :
class Produit
{
public function __construct( array $donnees )
{
$this->hydrate($donnees);
}
public function hydrate(array $donnees )
{
//on parcour les seters definis
foreach($donnees as $cle=> $valeur)
{
$methode='set'.ucfirst($cle);
//on verifie si la courante existe
if(method_exists($this, $methode))
{
$this->$methode($valeur);
}
}
}
}
N.B : il faut implémenter les seters pour que la méthode hydrate fonctionne. Ce constructeur est flexible et l’ordre des arguments n’est pas important car on utilise un tableau associatif.
//Exemple 1:
new Produit([
'prix' => 150000,
'designation' => "SamSung Galaxy A16" ,
'ref' => "SM-A15",
] );
//Exemple 2:
new Produit([
'designation' => "SamSung Galaxy A16" ,
'ref' => "SM-A15",
'prix' => 150000,
] );
Ce cours est réservé uniquement aux abonnés premium de la plateforme.