les différents types de constructeurs et leurs utilisations

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,

            ] );