Quelle est la différence entre public, private et protected en PHP ?
Bonjour à tous ! Je viens de commencer à étudier la programmation orientée objet en PHP et je n'arrive pas à comprendre la différence entre les modificateurs d'accès public, private et protected. J'ai lu la documentation, mais en pratique, je suis toujours confus.
Voici une classe simple :
```php
class Car {
public $color = 'red';
private $engineStatus = 'off';
protected $fuelLevel = 100;
public function startEngine() {
$this->engineStatus = 'on';
}
private function checkFuel() {
return $this->fuelLevel > 0;
}
protected function refuel($liters) {
$this->fuelLevel += $liters;
}
}
```
Je crée un objet :
```php
$car = new Car();
echo $car->color; // Fonctionne
echo $car->engineStatus; // Erreur !
$car->refuel(20); // Ne fonctionne pas non plus
```
Pourquoi ne puis-je pas accéder directement aux propriétés engineStatus et fuelLevel ? Et quelle est la différence entre protected et private, si les deux limitent l'accès ? Expliquez-moi, s'il vous plaît, avec