свойства — PHP: невозможно установить значение для частного статического свойства

У меня очень простая проблема, когда я пытаюсь установить значение частного статического свойства, состоящего из константы, к которой добавляется такой текст:

private static $cssDirectory = APP_ROOT.'css/';

Я получаю синтаксическую ошибку. Я могу исправить это, сделав личную переменную не статичной, и, например, присвоить значение конструктору, но, поскольку я хочу, чтобы она была статической, мне интересно, что я могу с этим поделать. Я также могу сделать константу для всего значения и использовать ее, но опять же мне любопытно, почему я не могу сделать это так, как пытался. Может быть, я тоже что-то не так делаю. Благодарю.

0

Решение

Из документов PHP

Переменные-члены класса называются «свойствами» … Они определяются с помощью одного из ключевых слов public, protected или private, за которым следует обычное объявление переменной. Это объявление может включать в себя инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть в состоянии быть оцененной во время компиляции и не должна зависеть от информации времени выполнения для оценки.

Конкатенация является операцией во время выполнения.

Вам не нужно создавать экземпляры и устанавливать значение свойства в конструкторе …. вместо этого вы можете написать метод статического установщика

Обратите внимание, что PHP 5.6 позволяет этот тип инициализации свойств класса

РЕДАКТИРОВАТЬ

Пример метода статического сеттера:

private static $cssDirectory;

public static setCssDirectory() {
self::$cssDirectory = APP_ROOT.'css/';
}

И тогда вы просто позвоните

myClassName::setCssDirectory();

прежде всего

1

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

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