HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Напомню, что в PHP возможно определять константы. Они используются для хранения каких-то постоянных данных, которые, как правило, глобальные. Например, константа PHP_VERSION содержит версию PHP, в которой был запущен код (а его можно запустить на разных версиях интерпретатора). Эта константа относится к предопределённым (предоставляется интерпретатором). PHP позволяет создавать свои собственные константы, используя конструкцию const SEC_PER_DAY = 86400;. Эти константы принадлежат пространству имён и могут быть импортированы из него, используя конструкцию use const App\Times\SEC_PER_DAY;.</p>
1 <p>Напомню, что в PHP возможно определять константы. Они используются для хранения каких-то постоянных данных, которые, как правило, глобальные. Например, константа PHP_VERSION содержит версию PHP, в которой был запущен код (а его можно запустить на разных версиях интерпретатора). Эта константа относится к предопределённым (предоставляется интерпретатором). PHP позволяет создавать свои собственные константы, используя конструкцию const SEC_PER_DAY = 86400;. Эти константы принадлежат пространству имён и могут быть импортированы из него, используя конструкцию use const App\Times\SEC_PER_DAY;.</p>
2 <p>Внутри классов константы определяются точно таким же способом, как и снаружи. Основное отличие проявляется в способе доступа.</p>
2 <p>Внутри классов константы определяются точно таким же способом, как и снаружи. Основное отличие проявляется в способе доступа.</p>
3 <p>Синтаксически обращение происходит с использованием двух двоеточий после имени класса, за которыми, в свою очередь, идёт имя константы. Обратите внимание на отсутствие знака $.</p>
3 <p>Синтаксически обращение происходит с использованием двух двоеточий после имени класса, за которыми, в свою очередь, идёт имя константы. Обратите внимание на отсутствие знака $.</p>
4 <p>Для констант классов нет особого синтаксиса импорта. Он не нужен по очень простой причине - импортируется в другие пространства имён всегда класс, а константа извлекается уже из него.</p>
4 <p>Для констант классов нет особого синтаксиса импорта. Он не нужен по очень простой причине - импортируется в другие пространства имён всегда класс, а константа извлекается уже из него.</p>
5 <p>Внутри класса к константе можно обратиться ровно таким же образом, но есть и другой способ:</p>
5 <p>Внутри класса к константе можно обратиться ровно таким же образом, но есть и другой способ:</p>
6 <p>В этом способе вместо имени класса слева стоит ключевое слово self. Его удобство заключается в отсутствии дублирования имени класса. Эта проблема особенно актуальна при активном использовании констант внутри самого класса.</p>
6 <p>В этом способе вместо имени класса слева стоит ключевое слово self. Его удобство заключается в отсутствии дублирования имени класса. Эта проблема особенно актуальна при активном использовании констант внутри самого класса.</p>
7 <h2>Предопределённые константы</h2>
7 <h2>Предопределённые константы</h2>
8 <p>Внутри класса определено несколько магических констант:</p>
8 <p>Внутри класса определено несколько магических констант:</p>
9 <ul><li>__CLASS__ - текущее имя класса</li>
9 <ul><li>__CLASS__ - текущее имя класса</li>
10 <li>__METHOD__ - текущее имя метода</li>
10 <li>__METHOD__ - текущее имя метода</li>
11 </ul><p>В отличие от обычных констант, магические не требуют префикса self:: и доступны только внутри класса.</p>
11 </ul><p>В отличие от обычных констант, магические не требуют префикса self:: и доступны только внутри класса.</p>
12 <p>Кроме магических, в классах есть одна специальная константа class. Она возвращает полное имя класса и может вызываться только через класс.</p>
12 <p>Кроме магических, в классах есть одна специальная константа class. Она возвращает полное имя класса и может вызываться только через класс.</p>
13 <p>Эта константа возвращает полное имя класса относительно пространства имён, в котором происходит её вызов.</p>
13 <p>Эта константа возвращает полное имя класса относительно пространства имён, в котором происходит её вызов.</p>
14 <h2>Итого</h2>
14 <h2>Итого</h2>
15 <p>Даже в такой простой штуке, как константы, зарыто много разных возможностей (и не факт, что это хорошо). Не пытайтесь их запомнить. В реальности всё это используется не так часто, и когда вам понадобятся константы, то вы легко найдёте всю необходимую информацию в официальной документации. Основная цель урока - показать, как бывает.</p>
15 <p>Даже в такой простой штуке, как константы, зарыто много разных возможностей (и не факт, что это хорошо). Не пытайтесь их запомнить. В реальности всё это используется не так часто, и когда вам понадобятся константы, то вы легко найдёте всю необходимую информацию в официальной документации. Основная цель урока - показать, как бывает.</p>
16 <p>В каких случаях нужно использовать константы? В ситуациях, когда с данным типом (классом) связана некоторая важная и статическая информация (то есть не меняющаяся). Для класса DateTime такими константами являются различные форматы даты, закреплённые разными стандартами. В целом константы не влияют на архитектуру приложения и вообще не относятся к ООП. Это просто удобное (в рамках ООП-модели PHP) добавление, полезное в некоторых ситуациях.</p>
16 <p>В каких случаях нужно использовать константы? В ситуациях, когда с данным типом (классом) связана некоторая важная и статическая информация (то есть не меняющаяся). Для класса DateTime такими константами являются различные форматы даты, закреплённые разными стандартами. В целом константы не влияют на архитектуру приложения и вообще не относятся к ООП. Это просто удобное (в рамках ООП-модели PHP) добавление, полезное в некоторых ситуациях.</p>