Постоянная видимость класса 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';
7 ответов
Начиная с PHP7.1 модификаторы видимости разрешены для констант классов, в предыдущих версиях было невозможно установить видимость констант в классе. Они всегда публичны. См. Комментарии по адресу http://www.php.net/manual/en/language.oop5.constants.php для получения дополнительной информации.
Обновление: модификаторы видимости для констант были добавлены в PHP 7.1 (выпущено 1 декабря 2016 года). См. RFC: Видимость констант класса поддержки.
Синтаксис выглядит так:
class ClassName {
private const PRIVATE_CONST = 0;
protected const PROTECTED_CONST = 0;
public const PUBLIC_CONST = 0;
}
Альтернативой может быть использование постоянного метода, например
private static function gravitationalConstant() {
return 9.81;
}
Цитата из книги Рефакторинга Фаулера:
Эта идиома менее знакома программистам на C, но очень знакома Smalltalkers (у которых не было констант в их языке). В целом, я не склонен использовать это в Java, так как это менее идиоматично для языка. Однако, если вам нужно заменить простое возвращение на вычисленное значение, тогда стоит изменить поле констант на метод констант. (Я думаю, что для этого должен быть рефакторинг....)
В 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
Это возможно в Php 7.1.0. Пожалуйста, посетите PHP RFC: Поддержка класса Постоянная видимость
Модификаторы не разрешены для констант в php. Ты можешь использовать
public static $variable = "abc";
но к сожалению final
здесь не разрешено
Теперь это возможно в PHP 7.1, выпущенной сегодня Alpha, которая добавляет модификаторы постоянной видимости класса