Avatar ·

Cuándo usar self y cuándo $this en PHP? Entendiendo el ámbito de visibilidad

¡Hola a todos! Empecé a estudiar POO en PHP y constantemente me confundo sobre cuándo usar `self` y cuándo `$this`. Parece que ambos acceden a propiedades y métodos de la clase, pero claramente hay una diferencia y no logro captarla. Aquí hay un ejemplo simple que me desconcierta. Tengo una clase con una constante y una propiedad normal: ```php class Car { const WHEELS = 4; public $color = 'red'; public function showInfo() { echo "Ruedas: " . self::WHEELS . "\n"; echo "Color: " . $this->color . "\n"; } } $car = new Car(); $car->showInfo(); ``` ¿Por qué para la constante escribo `self::WHEELS` y para la propiedad `$this->color`? ¿Qué pasaría si intento escribir `self::$color` o `$this::WHEELS`? ¿Funciona esto en herencia? Por ejemplo, si creo una clase hija y sobrescribo la constante o la propiedad, ¿cómo debo acceder correctamente? Ya he leído sobre métodos y propiedades static, pero aún siento que no entiendo completamente la lógica. Por favor, explíquenme.