OOPHP: ссылка на одно статическое свойство в другом

Я пытаюсь сделать это:

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}

Это: а) невозможно; б) плохая идея по какой-то причине; в) лучше достигнуто какими-то другими средствами?

1

Решение

Вы можете назначать константные значения только члену класса в объявлении класса!

Таким образом, чтобы решить вашу проблему, вы должны будете присвоить значение в функции или в конструкторе и получить к нему доступ также внутри функции, поскольку она является закрытой!

<?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

а) можно посмотреть мой ответ / пример

б) Почему это должно быть плохой идеей? это обычное задание, и вы делаете свою собственность приватной, чтобы другие классы не могли их изменить!

в) И это совершенно нормально

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]