Если вы не хотите
$class = get_class($instance);
$var = $class::$staticvar;
, так как две строки слишком длинные, у вас есть другие варианты:
1. Написать геттер
<?php
class C {
static $staticvar = "STATIC";
function getTheStaticVar() {
return self::$staticvar;
}
}
$instance = new C();
echo $instance->getTheStaticVar();
Просто и элегантно, но вам придется писать геттер для каждой статической переменной, к которой вы обращаетесь.
2. Напишите универсальный статический-геттер
<?php
class C {
static $staticvar = "STATIC";
function getStatic($staticname) {
return self::$$staticname;
}
}
$instance = new C();
echo $instance->getStatic('staticvar');
Это позволит вам получить доступ к любой статической информации, хотя она все еще немного затянута.
3. Напишите магический метод
class C {
static $staticvar = "STATIC";
function __get($staticname) {
return self::$$staticname;
}
}
$instance = new C();
echo $instance->staticvar;
Этот позволяет вам получить экземплярный доступ к любой статической переменной, как если бы она была локальной переменной объекта, но это можно считать нечестивой мерзостью.