члены должны быть инициализированы константным выражением (например, строковая константа, числовой литерал и т. Д.). php выдаст ошибку разбора, если вы попытаетесь инициализировать член динамическим выражением (например, значением переменной или вызовом функции) ...
это не похоже на некоторые другие языки, такие как python или javascript, которые считают, что определения классов находятся на одном уровне с исполняемыми выражениями ... так что ваша идея здесь очень функциональна, но php по крайней мере сейчас ее не поддерживает ...
но есть несколько альтернатив:
добавить инициализацию после определения класса:
class C {...}
C::$var = $_SERVER['REMOTE_ADDR'];
или иметь функцию инициализации:
function init()
{
if (self::$init === false) {
self::$var = $_SERVER['REMOTE_ADDR'];
self::$init = true;
}
}
C::init();
или с более новым php, вы можете использовать хук __autoload () для выполнения статической инициализации ...