# Константы классов в ООП на PHP

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

Чтобы создать константу, ее нужно объявить через ключевое слово `const`, затем написать имя константы без доллара и обязательно сразу же задать ее значение:

`<?php class Test { const constant = 'test'; // задаем константу } ?>`

Общепринято имена констант писать большими буквами, то есть не `constant`, а `CONSTANT`. Это делается для того, чтобы визуально легко было отличать константы в коде.

Давайте поправим наш класс:

`<?php class Test { // Задаем константу: const CONSTANT = 'test'; } ?>`

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

Это значит, что константы класса задаются один раз для всего класса, а не отдельно для каждого объекта этого класса.

Поэтому обращение к константам происходит почти так же, как и для статических свойств: пишем имя класса, два двоеточия и название константы без доллара перед именем:

`<?php echo Test::CONSTANT; // выведет 'test' ?>`

Как уже упоминалось выше, значения констант можно прочитывать, но не записывать. Попытка что-то записать в нее выдаст ошибку:

`<?php Test::CONSTANT = 'test'; // выдаст ошибку ?>`

## Обращение к константам внутри класса

Внутри класса также можно обратится к константе через `::self`, вот так:

`<?php class Test { const CONSTANT = 'test'; function getConstant() { return self::CONSTANT; } } ?>`

Воспользуемся нашим методом:

`<?php $test = new Test; echo $test->getConstant(); // выведет 'test' ?>`

## Применение

Давайте сделаем класс `Circle`, с помощью которого можно будет найти площадь круга и длину окружности. Для работы с кругом нам понадобится число Пи, равное `3.14`. Логично будет для хранения этого числа использовать константу, чтобы случайно где-нибудь в коде наше число Пи вдруг не поменялось.

Вот частичная реализация нашего класса:

`<?php class Circle { const PI = 3.14; // запишем число ПИ в константу private $radius; // радиус круга public function __construct($radius) { $this->radius = $radius; } // Найдем площадь: public function getSquare() { // Пи умножить на квадрат радиуса } // Найдем длину окружности: public function getCircuit() { // 2 Пи умножить на радиус } } ?>`

Реализуйте предложенный класс `Circle` самостоятельно.

С помощью написанного класса `Circle` найдите длину окружности и площадь круга с радиусом `10`.

←→
↑