Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Использование классов для констант
Форумы портала PHP.SU » » Вопросы новичков » Использование классов для констант

Страниц (1): [1]
 

1. Perun - 07 Марта, 2017 - 20:13:07 - перейти к сообщению
Видел такое применение. Есть ли для этого какие-т предпосылки? Какие преимущества при использовании классов для назначения констант по сравнению с обычным способом через define?
2. OrmaJever - 07 Марта, 2017 - 20:20:27 - перейти к сообщению
грубо говоря их можно групировать, аналог неймспейсов
PHP:
скопировать код в буфер обмена
  1. Config::db_name
  2. App::lang
  3. User::cookie
3. Строитель - 07 Марта, 2017 - 20:35:48 - перейти к сообщению
Perun пишет:
по сравнению с обычным способом через define?
Их можно и не обычным способом объявлять, вообще без класса :

const ONE = 1;
echo ONE;

Но с некоторыми ограничениями, в сравнении с define().
4. Perun - 07 Марта, 2017 - 20:44:44 - перейти к сообщению
OrmaJever пишет:
аналог неймспейсов

Начал читать про пространства имен относительно классов, запутался еще больше...
Строитель пишет:
Их можно и не обычным способом объявлять, вообще без класса :

Интересно именно использование классов в контексте констант
5. Строитель - 07 Марта, 2017 - 22:24:48 - перейти к сообщению
Perun пишет:
Начал читать про пространства имен относительно классов, запутался еще больше...
Вы умеете работать с пользовательскими функциями? Если да, то можно провести аналогию между областью видимости локальных переменных внутри пользовательских функций, и областью видимости классов в пространствах имён.

В мануале написано довольно понятное разъяснение, в котором неймспейсы сравниваются с файловой системой любого компьютера: внутри одной и той же папки НЕ могут одновременно находиться два файла с одинаковым названием. Точно так же, внутри одного php-файла НЕ могут одновременно находиться два класса (или функции) с одинаковым названием. Но если описать класс (или функцию) в пространстве имён, то можно поместить в один php-файл два (и более) класса (или функции) с одинаковым именем.

Ниже я набросал код, который демонстрирует описанное поведение. Следует понимать, что это демо пример - в реальных проектах в одном php-файле должно находиться только одно пространство имён:
Спойлер (Отобразить)
6. OrmaJever - 08 Марта, 2017 - 16:13:44 - перейти к сообщению
Perun пишет:
Начал читать про пространства имен относительно классов, запутался еще больше...

Ну блин, если делать в пространствах имён то вызов будет такой
\Config\db_name
а в классе
Config::db_name
Дело вкуса, но второй вариант веселее
7. armancho7777777 - 08 Марта, 2017 - 17:11:20 - перейти к сообщению
Perun пишет:
Какие преимущества при использовании классов для назначения констант по сравнению с обычным способом через define?

Порядок, группировка.
Псевдокод (Отобразить)

Но это, полагаю, - пример различных костылей, в силу отсутствия в PHP типа объектов "Enum" (перечисления).

P.S. http://forum.php.su/topic.php?fo...21811#1488521811
8. Perun - 08 Марта, 2017 - 18:25:23 - перейти к сообщению
спасибо за ответы!

 

Powered by ExBB FM 1.0 RC1