Хотя было talk только для чтения переменных, по крайней мере, 2012, с даже RFC предлагая его на объектах, поддержка не существует на языке.
Одним из способов достижения чтения только переменного (или набора только для чтения переменных, как это может быть важно при определенных значениях конфигурации) являются с посредническим контейнером:
class Readonly {
public function __construct(...$vars) {
$this->vars;
}
public function __set($var, $value) {
if (array_key_exists($var, $this->vars)) {
throw new \LogicException("Variable $var is read-only");
} else {
$this->vars[$var] = $value;
}
}
public function __get($var) {
return array_key_exists($var, $this->vars) ? $this->vars[$var] : null;
}
protected $vars = [];
}
Что позволяет создавать контейнер переменных только для чтения:
$config = new Readonly('apikey');
$config->apikey = 'A01AB020'; // this works, first time set
echo $config->apikey;
$config->apikey = '00000000'; // boom! it's "final"
Используйте константу. –
https://secure.php.net/manual/en/language.constants.php – aynber
Да, я думал о постоянных, но не могу ли я использовать его с долларом? – user544262772