9 juin 2024

Les setters et les getters d'une classe

Dans cette formation, nous allons voir l'utilité des setters et des getters dans l'utilisation de nos classes en général. Il existe des cas spécifiques, mais ici, nous ne parlerons que des basiques.

 

Avant de commencer, il faut comprendre pourquoi on utilise des setters et des getters.

 

Le setters :

 

Il permet de définir une valeur selon des conditions données. Par exemple, si nous avions une nouvelle voiture en objet (class Voiture{}), on peut lui définir sa marque, sa couleur etc ..

 

Le getters :

 

Le getter permet de récupérer la valeurs définir grâce au setter ou depuis une données par défaut. Par exemple, si la couleur de notre voiture est rouge on aura en retour “rouge”.

 

Restons dans l'exemple de notre voiture pour apprendre à utiliser les setters et getters.

 

Créons la classe Voiture :

 

<?php

class Voiture{ }

 

Dans cette classe créons les différentes variable qui seront les informations de notre voiture :

 

    public $couleur;

    public $marque;

    public $kilometrage;

    public $immat;

 

Regardons la différence entre une variable public, privé ou protégé :

 

Public : Les éléments déclarés comme publics sont accessibles partout.

Privé : L'accès aux éléments privés est uniquement réservé à la classe qui les a définis.

Protégé : L'accès aux éléments protégés est limité à la classe elle-même, ainsi qu'aux classes qui en héritent et parente.

 

Pour notre cas, on désire qu'elle soit publique, car aucune donnée sensible n'est présente. Vous pourrez tester avec chacun des états ci-dessus si vous le souhaitez.

 

Ajoutons un constructeur à notre classe pour définir les valeurs de celle-ci (dans notre exemple, on y ajoute des valeurs par défaut avec ="" ou =0): 

 

    public function __construct($couleur="", $marque="", $kilometrage=0, $immat="")

    {

        $this->couleur = $couleur;

        $this->marque = $marque;

        $this->kilometrage = $kilometrage;

        $this->immat = $immat;

    }

 

Maintenant passons aux setters et getters, commençons par le setter :

 

    public function setCouleur(string $couleur):static

    {

        $this->couleur = $couleur;

        return $this;

    }

 

Détaillons ce code, on rends notre fonction publique pour qu'elle soit accessible partout. On y ajoute une variable de paramètre à notre fonction ($couleur) et on rend la fonction static.

 

Static : Le fait de déclarer des propriétés ou des méthodes comme statiques vous permet d'y accéder sans avoir besoin d'instancier la classe. Celles-ci peuvent alors être accédées statiquement depuis une instance d'objet.

 

On récupère notre variable $this->couleur et on lui assigne la valeur du paramètre de la fonction ($couleur)et on retourne le tout.

 

Et pour le getter, il suffit simplement de retourner la valeur de la variable publique.

 

    public function getCouleur(): string

    {

        return $this->couleur;

    }

 

Maintenant, si on vient à créer une nouvelle voiture hors de la classe en utilisant $voiture = new Voiture(); et qu'on ajoute une couleur à celle-ci :

 

<?php

class Voiture{ … } 

$voiture->setCouleur("Bleu");

 

On print $voiture->getCouleur() on aura en résultat Bleu.

 

Pour automatiser un message si on instancie une nouvelle voiture, on va utiliser une méthode magique __toString():

 

    public function __toString()

    {

        return "La voiture est de couleur {$this->getCouleur()}, de la marque {$this->getMarque()} à {$this->getKilometrage()}km et possède l'immatriculation {$this->getImmat()}";

    }

 

NB: j'ai fait tout les setter et getter, à vous de les faire en suivant l'exemple ci-dessus.

 

$voiture = new voiture();

 

$voiture->setCouleur("Bleu");

$voiture->setMarque("Ford");

$voiture->setKilometrage(10000);

$voiture->setImmat("AA-111-BB");

 

print $voiture;

 

Le résultat sera celui de la méthode magique : 

 

La voiture est de couleur Bleu, de la marque Ford à 10000km et possède l'immatriculation AA-111-BB  

 

Un setter et un getter peuvent être utilisés sur des fichiers enfant si la classe a été étendue dessus.

 

class Assurance extends Voiture

{

    public  $couleur;

    public $marque;

    public $kilometrage;

    public $immat;

 

    public function checkImmat(){

       return $this->getImmat();

    }

}

 

$voitures = new Assurance();

 

$voitures->setCouleur("Bleu");

$voitures->setMarque("Ford");

$voitures->setKilometrage(10000);

$voitures->setImmat("AA-111-BB");

 

print $voitures->checkImmat();

 

Le résultat sera celui de l'immatriculation : AA-111-BB

 

J'espère que vous aurez appris des choses !

Mots clés:

php

Cours Du Dev

Recevez les dernières formations disponibles en vous inscrivant à la newsletter

Créé par arkunis