global может использоваться только внутри методов или функций, т.е.
$a = 'test';
class Cls {
public function __construct($a) {
global $a;
$this->a = $a;
}
public function printer(){
global $a;
echo $this->a;
}
}
$get = new Cls($a);
$get->printer();
Использование global - очень неверная стратегия, и ее нужно избегать всеми силами....
В крайнем случае используй static (если нужно чтобы переменная была единая для всех экземпляров класса), причем его можно использовать как в пределах описания переменных и методов класса так и внутри функции при определении переменной
Если прямо надо сильно глобальную переменную и лень писать global в каждом методе, пользуйся функциями, определенных глобально, их будет видно везде. Пример реализации сиквенса:
function next_seq() {
static id=0;
return id++;
}
или даже возвращающего целые объекты или массивы
function yoyo() {
static $o=false;
if($o===false) $o=new MyCoolObject();
return $o;
}
использовать:
yoyo()->myCoolMethod();
Еще раз глобальная область видимости - бад практикс, везде старайтесь заворачивать весь функционал вокруг класса или хотя бы неймспейса. Это просто как ходить опрятно и не пованивать.