Я пытаюсь сделать это:
Class foo {
private static $foo = 'some val';
private static $bar = self::$foo.'!';
}
…но, очевидно, вы не можете сделать это:
Parse error: syntax error, unexpected '$foo' (T_VARIABLE) in {file} on line {line}
Это: а) невозможно; б) плохая идея по какой-то причине; в) лучше достигнуто какими-то другими средствами?
Вы можете назначать константные значения только члену класса в объявлении класса!
Таким образом, чтобы решить вашу проблему, вы должны будете присвоить значение в функции или в конструкторе и получить к нему доступ также внутри функции, поскольку она является закрытой!
<?php
Class foo {
private static $foo = 'some val';
private static $bar = null;
public function __construct() {
$this->init();
}public static function init() {
self::$bar = self::$foo . '!';
}
public static function getBar() {
echo self::$bar;
}
}
$obj = new foo();
echo $obj->getBar();?>
Выход:
some val!
Для получения дополнительной информации посмотрите здесь:
http://php.net/manual/en/language.oop5.static.php
http://php.net/manual/en/language.oop5.visibility.php
а) можно посмотреть мой ответ / пример
б) Почему это должно быть плохой идеей? это обычное задание, и вы делаете свою собственность приватной, чтобы другие классы не могли их изменить!
в) И это совершенно нормально
Других решений пока нет …