Passer au contenu principal

__set

La méthode magique __set est invoquée lorsqu'on tente d’écrire dans une propriété qui est soit inaccessible (c’est-à-dire protégée ou privée), soit inexistante.

Cette méthode peut être utile dans diverses situations spécifiques :

  • Dynamisme : Si votre classe possède un grand nombre de propriétés et que vous ne souhaitez pas écrire un mutateur (setter) pour chacune d’entre elles, la méthode __set peut être une solution efficace. Elle peut également être utile si vous générez des propriétés dynamiquement.
  • Gestion des erreurs : La méthode __set vous permet de contrôler ce qui se passe lorsqu'un utilisateur tente d’écrire dans une propriété qui n’existe pas. Vous pouvez, par exemple, déclencher une erreur.
  • Validation des données :  Vous pouvez utiliser __set pour valider ou filtrer les données avant qu’elles ne soient affectées à une propriété. Par exemple, vous pouvez vérifier que les données sont dans une plage de valeurs acceptable, etc…

L’utilisation de la méthode __set doit être faite avec prudence, car elle peut rendre le code plus difficile à comprendre et à maintenir. Il est généralement préférable d’utiliser des mutateurs pour chaque propriété, sauf dans les cas où la flexibilité offerte par __set est nécessaire.

class User {
    private $username;

    public function __set($property, $value) {
        echo "Attempting to assign '$value' to '$property'";
        $this->username = $value;
    }
}

$user = new User;
$user->username = "John Doe";  // Outputs: Attempting to assign 'JohnDoe' to 'username'