Что нового в PHP7.1: видимость констант.
Всем привет! В этой статье мы рассмотрим, как использовать видимость констант в PHP 7.1.
Как обычно, давайте сразу начнем с примеров.
class CarProduct {
const VAT = 77.00;
}
class Mercedes extends CarProduct {
//
}
$product = new Mercedes;
В таком коде мы можем получить значение константы таким образом:
echo $product::VAT;
Теперь представим, что мы не хотим, чтобы значение можно было получить таким образом, а только с помощью метода, в котором будем присоединять знак процента.
class CarProduct {
const VAT = 77.00;
public function getVat() {
return self::VAT.'%';
}
}
Теперь мы можем получить доступ таким образом:
echo $product->getVat();
Проблема в том, что константа все так же остается в открытом доступе, и мы можем получить ее значение так, как мы это делали ранее. Что мы можем сделать, чтобы заблокировать возможность получения значения константы таким образом, поскольку мы хотим, чтобы ее значение могло быть получено только с помощью метода?
Для решения этого вопроса в PHP 7.1 были добавлены уже хорошо нам знакомые ключевые слова: public, protected и private. Работают они так же, как и с переменными.
Давайте изменим наш код:
// ...
protected const VAT = 77.00;
// ...
Теперь, если мы попробуем получить доступ напрямую, то получим ошибку:
echo $product::VAT;
Но сможем получить значение константы с помощью метода. Если вы хотите, чтобы получать значение константы можно было только внутри класса, где она описана, то используйте ключевое слово private.
А на этом сегодня все. Спасибо за внимание!
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.