PHP - Encapsulation

L'encapsulation est l'un des principes fondamentaux de la programmation orientée objet (POO). Elle fait référence au regroupement de données avec les méthodes qui opèrent sur ces données. En PHP, l'encapsulation peut être réalisée à l'aide de classes et de modificateurs d'accès tels que public, private et protected. Ce tutoriel vous guidera à travers les bases de l'encapsulation en PHP, en partant des membres public, puis en passant aux membres private, et enfin en couvrant les membres protected.

PHP - Encapsulation

Public Members

Les membres public sont accessibles depuis n'importe où, à l'intérieur comme à l'extérieur de la classe. Ils sont déclarés à l'aide du mot-clé public. Voici un exemple d'une classe simple avec un membre public :

class Car {
public $color;

public function setColor($color) {
$this->color = $color;
}

public function getColor() {
return $this->color;
}
}

$myCar = new Car();
$myCar->setColor("red");
echo "My car is " . $myCar->getColor() . "."; // Output: My car is red.

Dans cet exemple, nous avons une classe Car avec une propriété public $color et deux méthodes public setColor() et getColor(). Nous pouvons facilement définir et obtenir la couleur de la voiture depuis l'extérieur de la classe.

Private Members

Les membres private ne sont accessibles que dans la classe où ils sont définis. Ils sont déclarés à l'aide du mot-clé private. Voici un exemple d'une classe avec un membre private :

class BankAccount {
private $balance;

public function __construct($initialBalance) {
$this->balance = $initialBalance;
}

public function deposit($amount) {
if ($amount > 0) {
$this->balance += $amount;
}
}

public function getBalance() {
return $this->balance;
}
}

$myAccount = new BankAccount(100);
$myAccount->deposit(50);
echo "My account balance is " . $myAccount->getBalance() . "."; // Output: My account balance is 150.

Dans cet exemple, nous avons une classe BankAccount avec une propriété private $balance et deux méthodes public deposit() et getBalance(). La propriété $balance n'est pas directement accessible depuis l'extérieur de la classe, mais nous pouvons la manipuler à l'aide de la méthode deposit() et récupérer sa valeur à l'aide de la méthode getBalance().

Protected Members

Les membres protected sont accessibles à l'intérieur de la classe où ils sont définis ainsi que dans toutes les sous-classes. Ils sont déclarés à l'aide du mot-clé protected. Voici un exemple d'une classe avec un membre protected :

class Animal {
protected $name;

public function __construct($name) {
$this->name = $name;
}
}

class Dog extends Animal {
public function bark() {
echo "Woof! I am " . $this->name . ".";
}
}

$myDog = new Dog("Buddy");
$myDog->bark(); // Output: Woof! I am Buddy.

Dans cet exemple, nous avons une classe Animal avec une propriété protected $name. La classe Dog étend la classe Animal et a accès à la propriété $name parce qu'elle est protected. Nous pouvons utiliser la propriété $name à l'intérieur de la classe Dog pour implémenter la méthode bark().

Conclusion

L'encapsulation est un concept crucial en POO qui aide à maintenir l'intégrité des données en limitant l'accès direct à celles-ci. En utilisant des modificateurs d'accès tels que public, private et protected, vous pouvez contrôler comment vos données sont accédées et modifiées. Comprendre l'encapsulation vous aidera à écrire du code plus robuste et plus facile à maintenir en PHP et dans d'autres langages POO.

Credits: Image by storyset