Avatar ·

¿Cuál es la diferencia entre public, private y protected en PHP?

¡Hola a todos! Acabo de empezar a aprender programación orientada a objetos en PHP y no puedo entender la diferencia entre los modificadores de acceso public, private y protected. Parece que leí la documentación, pero en la práctica todavía me confundo. Aquí tengo una clase 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; } } ``` Creo un objeto: ```php $car = new Car(); echo $car->color; // Funciona echo $car->engineStatus; // ¡Error! $car->refuel(20); // Tampoco funciona ``` ¿Por qué no puedo acceder directamente a las propiedades engineStatus y fuelLevel? ¿Y cuál es la diferencia entre protected y private, si ambos restringen el acceso? Explíquenme por favor.