Константы класса похожи на обычные константы за исключением того, что они находятся внутри класса. Константы класса не могут быть изменены, отсюда и название константы. Они объявляются с помощью ключевого слова const и выделяются в памяти один раз для каждого класса, а не каждый раз, когда вы создаете экземпляр объекта; это то, что имеется в виду, когда вы слышите, что константы живут внутри класса. В этом смысле они напоминают статические переменные, но статические переменные можно изменять. Чтобы получить доступ к константе класса, вам нужно использовать имя класса и оператор разрешения области видимости (двойное двоеточие).

Константы не имеют модификаторов видимости, таких как частные, общедоступные или защищенные, и перед ними нет $, как у свойств. Самый быстрый способ проиллюстрировать константы на примере. Давайте продолжим классы Dog и Car, которые мы создали в предыдущей статье.



Если мы начнем с класса Dog, какие константы должны быть у каждой собаки? Другими словами, что не меняется между собаками? Пара констант, которые приходят мне в голову, это то, что у каждой собаки есть хвост и есть сердце. Итак, давайте добавим их в класс. Помните, что константы добавляются вне методов, но внутри фигурных скобок класса. Они начинаются с ключевого слова const и обычно пишутся заглавными буквами, чтобы отличать их от всех других ключевых слов.

const HAS_HEART = true;
const HAS_TAIL = true;

Если мы хотим быстро отобразить вывод константы, нам не нужно создавать экземпляр объекта; мы можем использовать оператор разрешения для доступа к постоянному значению, расположенному в классе Dog, то есть Dog::HAS_HEART.

var_dump( Dog::HAS_HEART );

Давайте посмотрим на другой пример, класс Car. Чтобы автомобиль был разрешен для использования на дорогах, он должен иметь фары, задние фонари и поворотники. Это константы, которые мы определим для нашего класса Car.

Опять же, чтобы определить их, мы начинаем с ключевого слова const, за которым следует имя константы. Я бы подумал, что на данный момент нет необходимости упоминать соглашение об именах констант, поскольку константы следуют тому же соглашению об именах, что и все другие метки в PHP, но вот оно: действительное имя константы начинается с буквы или символа подчеркивания, за которым следует любым количеством букв, цифр или знаков подчеркивания.

const HAS_HEADLIGHTS = true;
const HAS_TAIL_LIGHTS = true;
const HAS_TURN_SIGNALS = true;

Нам также не нужно просто var_dump наших постоянных значений; мы можем использовать их для построения строки. Давайте объединим наше постоянное значение внутри тернарного оператора, чтобы создать небольшую строку.

echo «Это транспортное средство « . ((Car::HAS_HEADLIGHTS) ? «автомобиль».: «не является автомобилем».);

Если мы правильно определили наши константы, результат приведенного выше оператора должен быть таким: The Vehicle is a car.

Я оставлю вас с одной последней мыслью о константах. Константы могут хранить те же значения, что и свойства в классе. Это все, что вам нужно знать о константах. Получайте удовольствие от программирования.



Дино Кайич в настоящее время является руководителем отдела информационных технологий в компаниях LSBio (LifeSpan BioSciences, Inc.), Absolute Antibody, Kerafast, Everest BioTech, Nordic MUbio и Exalpha. Он также является генеральным директором MyAutoSystem. Он имеет более чем десятилетний опыт разработки программного обеспечения. У него есть B.S. в области компьютерных наук и несовершеннолетнего в области биологии. Его опыт включает в себя создание приложений для электронной коммерции на уровне предприятия, разработку программного обеспечения на основе исследований и содействие распространению знаний посредством письма.

Вы можете связаться с ним в LinkedIn, подписаться на него в Instagram или подписаться на его публикацию в Medium.

Прочитайте все истории Дино Каджика (и тысяч других авторов на Medium). Ваш членский взнос напрямую поддерживает Дино Кайича и других писателей, которых вы читаете. Вы также получите полный доступ ко всем историям на Medium.