Бывает так, что объект имеет постоянные характерные для себя значения, допустим, значение PI=3.14, E=2.7, G=8.9 и т.д. И для сохранения подобных констант нам необходимо будет создать константы в классе.
Для создания константы используется ключевое слово const и дальше пишется название константы без знака $, так как это уже будет как признак переменной. Еще принято писать константы в верхнем регистре в остальном не должны начинаться с цифр или содержать спец-символ, кроме символа подчеркивания и еще одна особенност констант — в том, что их сразу же надо объявлять при создании и это значение всегда будет в нем оставаться. Конечно, можно переопределить константу через функцию define(), здравый смысл подсказывает, что делать этого нельзя, хотя, решать вам :).
После того, как мы определили константу к нему еще надо обратиться через объект, но так как это не переменна, то доступ к константе и для этого существуют 4 способа, 2 из которых задействован начиная с PHP 5.3.
1. Доступ внутри класса — способ, при котором к константе можно обратиться через ключевое слово self:: или через название класса:
class MyClass{
const MY_CONST = 3.14;
public function myMethod()
{
echo self::MY_CONST + MyClass::MY_CONST;// Будет все равно, что 3.14*2
}
}
2. Способ используется за пределами класса, так как у нас название класса уникально, а название констант может совпадать в разных классах, то следует их как -то идентифицировать и для этого используется вот такой же вариант:
MyClass::MY_CONST
который мы уже использовали выше;
3. Другой вариант — более новый, который поддерживается с версии 5.3 -‘это через имя объекта, если у нас есть несколько объектов(экземпляров) одного и того же класса, то через все эти объекты мы можем обратиться к ,определенной в данном классе, константе и значение всегда будет одно и то же, независимо какой объект, вот к примеру:
$newObj_1=new MyClass();
$newObj_2=new MyClass();
echo $newObj_1::MY_CONSTANT;//3.14
echo $newObj_2::MY_CONSTANT;//3.14
4. Еще один интересны способ — через строчное название класса, который поддерживается с версии 5.3 ,то есть определяем переменную с названием класса и через эту переменную обращаемся и вот как это выглядит:
$newVar_1="MyClass";
$newVar_2="MyClass";
echo $newVar_1::MY_CONSTANT;//3.14
echo $newVar_2::MY_CONSTANT;//3.14
Вот и все особенности констант в ООП PHP :).