Подтвердить что ты не робот

Постоянная видимость класса php

Можем ли мы установить видимость константы класса?
Для этого примера:

class MyClass {
    const CONST_VALUE = 'A constant value';
}

Можем ли мы указать

public const CONST_VALUE = 'A constant value';

или же

private const CONST_VALUE = 'A constant value';

или же

protected const CONST_VALUE = 'A constant value';
4b9b3361

Ответ 1

Начиная с PHP7.1 модификаторы видимости разрешены для констант классов, в предыдущих версиях было невозможно установить видимость констант в классе. Они всегда публичны. См. Комментарии по адресу http://www.php.net/manual/en/language.oop5.constants.php для получения дополнительной информации.

Ответ 2

Обновление: модификаторы видимости для констант были добавлены в PHP 7.1 (выпущено 1 декабря 2016 г.). См. RFC: Постоянная видимость класса поддержки.

Синтаксис выглядит следующим образом:

class ClassName {
    private const PRIVATE_CONST = 0;
    protected const PROTECTED_CONST = 0;
    public const PUBLIC_CONST = 0;
}

Ответ 3

Альтернативой может быть использование метода констант, например

private static function gravitationalConstant() {
    return 9.81;
}

Цитата из Книга рефакторинга Фаулера:

Эта идиома менее знакома программистам на C, но хорошо знакома Smalltalkers (у которых на их языке не было констант). В целом я не склонен использовать это в Java, поскольку он менее идиоматичен для языка. Однако, если вам нужно заменить простой доход с вычисленным значением, то стоит изменить постоянное поле на постоянный метод. (Думаю, для этого должен быть рефакторинг....)

Ответ 4

В PHP Последняя версия (PHP 7.1.0) будет доступна.

Пример Синтаксис был похож.

class Token {
    // Constants default to public
    const PUBLIC_CONST = 0;

        // Constants then also can have a defined visibility
        private const PRIVATE_CONST = 0;
        protected const PROTECTED_CONST = 0;
        public const PUBLIC_CONST_TWO = 0;

        //Constants can only have one visibility declaration list
        private const FOO = 1, BAR = 2;
}

См. ссылку ниже. https://wiki.php.net/rfc/class_const_visibility

Ответ 5

Модификаторы не допускаются для констант в php. Вы можете использовать

public static $variable = "abc";

но, к сожалению, final здесь не разрешено.