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.