El problema es conceptual. Las variables "siempre son globales para toda la clase", ya que los atributos de un objeto son propios del objeto y el mismo puede usar sus... propios atributos (lo cual es lógico).
Por concepto general todos los atributos de una clase deben ser *siempre* privados y mediante métodos "get / set" (públicos / privados) permitir modificar ó ver, o modificar y ver, de acuerdo a las necesidades de la clase.
Por consiguiente y usando sintaxis PHP actualizada, siempre deberías crear atributos privados
Código PHP:
class Persona{
private $nombre = "Enrique Place";
public function getNombre(){
return $this->nombre;
}
}
$yo = new Persona();
echo $yo->getNombre(); // retorna "Enrique Place"
echo $yo->nombre; // error, no anda
$yo->nombre = "pepe"; // error, no anda
En este ejemplo solo puedes obtener el nombre pero no modificarlo.
PD: buscar en Google
"setter getter PHP"