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