⊗ppOpMgSP 91 of 107 menu

Écriture de propriétés via la magie en POO en PHP

La méthode magique __set est appelée lors d'une tentative de modification de la valeur d'une propriété inexistante ou cachée. Elle accepte comme paramètres le nom de la propriété et la valeur que l'on tente de lui assigner.

Regardons un exemple pratique. Supposons que nous ayons la classe Test suivante :

<?php class Test { private $prop1; private $prop2; } ?>

Créons dans cette classe la méthode magique __set qui, à l'aide de la fonction var_dump, affichera le nom de la propriété à laquelle on a tenté d'accéder, et la valeur que l'on a tenté de définir pour cette propriété :

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { var_dump($property . ' ' .$value); } } ?>

Vérifions le fonctionnement de notre classe :

<?php $test = new Test; $test->prop = 'value'; // var_dump de la méthode __set affichera 'prop value' ?>

Maintenant, assignons la valeur à la propriété dont le nom est stocké dans la variable $property :

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; // on assigne la valeur } } ?>

Maintenant, nous pourrons écrire dans les propriétés privées de l'extérieur de la classe :

<?php $test = new Test; $test->prop1 = 1; // on écrit 1 $test->prop2 = 2; // on écrit 2 ?>

Nous pouvons écrire, cependant, vérifier si quelque chose y a été écrit - non, car les propriétés sont privées.

On peut créer un getter pour ces propriétés ou simplement utiliser la méthode magique __get. Utilisons la deuxième option :

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; } // Getter magique des propriétés : public function __get($property) { return $this->$property; } } ?>

Maintenant nous pouvons vérifier le fonctionnement de notre classe. Vérifions :

<?php $test = new Test; $test->prop1 = 1; // on écrit 1 $test->prop2 = 2; // on écrit 2 echo $test->prop1; // affichera 1 echo $test->prop2; // affichera 2 ?>

En réalité, bien sûr, il ne faut pas autoriser n'importe qui à écrire dans les propriétés privées, sinon l'essence même de ces propriétés privées disparaît (il serait plus simple de les rendre publiques et c'est tout).

Par conséquent, cette méthode ne doit être utilisée que lorsqu'il y a une réelle nécessité. Dans les prochaines leçons, nous verrons d'autres exemples d'utilisation judicieuse.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser