Exactamente asi lo he implementado yo en my clase, pero me gusta mas la idea de usar static, porque al hacerlo con global siempre cabe la posibilidad de modificar la variable por error en otra parte del codigo.
Ya se , esto se resuelve poniendole un nombre largo a la variable, o que empieze por '___' como hice yo en mi codigo '___numObjClass = 0 '.
Creo que he resuelto el problema de acceso a la variable static, sin perder la proteccion del ambito de la clase.
Este es un ejemplo:
Código PHP:
class prueba
{
var $contador;
function prueba()
{
static $contador;
$this->contador =& $contador;
$this->contador++;
echo "constructor: {$this->contador} <br>";
}
}
/ ************* Pruebas **************/
$a = new prueba();
$b = new prueba();
echo "contador en \$a: ".$a->contador."<br>";
echo "contador en \$b: ".$b->contador."<br>";
$c = new prueba();
echo "contador en \$a: ".$a->contador."<br>";
echo "contador en \$b: ".$b->contador."<br>";
echo "contador en \$a: ".$c->contador."<br>";
De esta forma tengo una unica variable static a la que puedo acceder desde la propiedad 'contador' de cualquier objeto, pero el ambito queda limitado solo a los objetos de esta clase.
De todas formas revisarme el codigo porque como las referencias de PHP no son lo mismo que los punetros de C, todabia me hago un poco de lio cuando trabajo con referencias.