Aller au contenu principal

Getter et Setter PHP dans VSCode

Implémentez sans effort des Getters et Setters PHP sécurisés dans VSCode. Découvrez les bonnes pratiques pour les propriétés privées de classe et utilisez l'extension recommandée pour les générer instantanément.

· 3 minutes de lecture
Voir la source
Christophe
Amoureux de Markdown, WSL et Docker ~ Curieux insatiable.
Cet article existe aussi en anglais — lire la version originale.

Traduction automatique

Cette traduction a été produite par une IA. Elle peut contenir des contresens ou des maladresses, en particulier sur les termes techniques. En cas de doute, consultez l'article de référence en anglais — c'est lui qui fait foi.

Cet article a plus d'un an, mais il a été relu le 30 juillet 2026 — son contenu est toujours exact.

Getter et Setter PHP dans VSCode

⚡
TL;DR

Cet article plaide pour des propriétés de classe PHP privées, accessibles uniquement via des getters/setters (afin de pouvoir valider les valeurs, par exemple refuser un prix négatif), et présente l'extension VSCode PHP Getters & Setters qui les génère automatiquement via un clic droit sur la propriété — supprimant l'excuse selon laquelle les écrire serait fastidieux.

Parce que vous êtes un excellent développeur, vous n'autorisez personne à accéder directement aux propriétés de votre classe, mais uniquement via un getter ou un setter.

Autrement dit, dans votre classe PHP, vous n'avez pas de propriétés public (c'est le diable) mais exclusivement des protected ou mieux, des private.

Et grâce aux getters et setters, vous permettez à d'autres objets d'interagir avec vos propriétés privées en les lisant (getters) ou en modifiant leurs valeurs (setters).

Rector peut repérer les endroits où une propriété aurait dû être privée dès le départ, et Tabnine devinera souvent le setter complet dès que vous commencez à taper private function set.

Certains diront « Oui, mais c'est fastidieux d'écrire ces fonctions ». Pas du tout.

L'extension en action​

Faites un clic droit sur une propriété, choisissez une action, et le code du getter/setter est généré pour vous :

PHP Getters & Setters

Getter et Setter PHP dans VSCode

Plus d'excuse pour les ignorer — l'extension PHP Getters & Setters tape à votre place.

Le mauvais scénario​

<?php
namespace Cavo;
class Product
{
public string $name = '';
public float $price = 0;
}

Ce fichier définit une classe Product simple dans l'espace de noms Cavo. La classe contient deux propriétés publiques : name pour stocker le nom du produit et price pour stocker son prix.

Comme vous le voyez, $name est public, donc je peux écrire des choses comme ci-dessous et c'est... OK.

$product = new Product();
$product->name='coMPuteR';
$product->price=-10;

Par OK, je veux dire : bon, j'ai utilisé un mélange de minuscules et de majuscules pour le nom et, bon, j'ai dit que je vendais des ordinateurs à -10 €. C'est OK parce que je ne fais aucune validation sur les valeurs, et c'est très mauvais.

En utilisant un setter (une fonction appelée quand la propriété est initialisée), je peux vérifier la valeur et corriger la casse par exemple, ou refuser un prix négatif.

La bonne approche​

Créons notre classe avec des propriétés privées :

<?php
namespace Cavo;
class Product
{
private string $name = '';
private float $price = 0;
public function __construct()
{
}
}

On définit une classe Product dans l'espace de noms Cavo avec deux propriétés privées : name (chaîne de caractères) et price (nombre décimal). Le constructeur est vide pour l'instant, ce qui signifie que les instances seront créées sans initialisation particulière des propriétés.

Donc, pour chaque propriété, vous devez écrire une fonction appelée Getter pour lire son contenu et une autre appelée Setter pour la modifier. Ça pourrait être pénible, mais ça ne l'est pas, grâce à l'extension présentée en haut de cet article : faites juste un clic droit sur une propriété, choisissez l'action souhaitée et lancez-la.

Maintenant, je peux écrire :

$product = new Product();
$product->setName('coMPuteR');
$product->setPrice(-10);

Et le code qui utilise la classe :

//highlight-next-line
public function getName(): string
{
return $this->name;
}
//highlight-next-line
public function setName(string $name): self
{
// Force the product name to be written in lowercase
$this->name = strtolower($name);
return $this;
}
//highlight-next-line
public function getPrice(): float
{
return $this->price;
}
//highlight-next-line
public function setPrice(float $price): self
{
if ($price < 0) {
throw new \Exception("Negative prices are not correct; please review your code");
}
$this->price = $price;
return $this;
}

Ce code définit des accesseurs et mutateurs (getters et setters) pour gérer deux propriétés d'un produit : son nom et son prix. Les setters appliquent des règles métier : le nom est converti en minuscules et le prix ne peut pas être négatif.

Laisser l'éditeur générer ce code répétitif est une façon de garder votre PHP propre. Le laisser vérifier votre code en est une autre : Développement PHP dans un devcontainer avec des outils de qualité de code préinstallés met en place un environnement prêt à l'emploi avec les linters et l'analyse statique déjà configurés.


Cet article vous a-t-il été utile ?
Avez-vous suivi les étapes de cet article ?