Константы классов в PHP. Как происходит их определение и доступ к значениям?

константы классов в php. как происходит их определение и доступ к значениям?

Определение константы

Класс может привязывать к своему контексту не только переменные и методы. Иногда требуются значения, которые невозможно изменить за весь жизненный цикл объекта.

Для этих целей PHP позволяет определять константы внутри классов. Выражение в общем виде можно записать как «const ИМЯ_КОНСТАНТЫ = значение_константы;». Обратите внимание, что определение происходит с использованием ключевого слова const. Функция define(), применяемая в работе с обычными константами, здесь бесполезна.

//Определяем класс "Сообщение об ошибке"
class ErrorMessage
{
    //Определяем константу с сообщением
    const INPUT_ERROR = 'Ошибка ввода!';
}

Заметка
Существуют устоявшиеся правила именования констант. Все буквы, входящие в её имя, должны быть записаны верхним регистром, а слова отделены друг от друга символом подчеркивания.

Доступ к значению

Получить значение константы можно как внутри класса, так и снаружи. У них нет модификаторов доступа, так как попытка изменения значения в любом случае вызывает фатальную ошибку.

Ранее мы говорили, что с классами невозможно взаимодействовать, так как они являются шаблонами. Это не совсем правда. Константы привязываются именно к классу, и получить их значения можно без создания объекта. В PHP данное поведение осуществляется с помощью оператора разрешения области видимости. Он записывается с помощью двух двоеточий «::».

Получение доступа к значению константы, без создания экземпляра класса, можно записать в виде следующего выражения «ИмяКласса::ИМЯ_КОНСТАНТЫ;». Если у вас уже есть созданный объект, то замените имя класса на имя переменной, содержащей его.

//Определяем класс "Палитра цветов"
class ColorsPalette
{
    //Определяем константы цветов
    const BLACK = 'Черный цвет';
    const WHITE = 'Белый цвет';
}

//Доступ к значению константы без
//создания объекта
echo ColorsPalette::BLACK; //Результат: Черный цвет

//Создаем объект и выводим значение
//константы через него
$palette = new ColorsPalette();
echo $palette::WHITE; //Результат: Белый цвет

Для получения значения константы внутри метода необходимо использовать специальную переменную $this. Она будет содержать ссылку на объект, после его создания.

//Определяем класс "Кусочек земли"
class VolcanicEarth
{
    //Определяем константу типа
    const TYPE = 'Незастывшая магма';

    //Метод доступа и вывода значения
    public function showEarthType()
    {
        echo 'Тип земли: '. $this::TYPE;
    }
}

//Создаем объект и выводим сообщение
//на экран
$earth = new VolcanicEarth();
$earth->showEarthType();
/*
* Результат:
* Тип земли: Незастывшая магма
*/

Последние публикации