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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Perun
Отправлено: 07 Марта, 2017 - 20:13:07
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




Видел такое применение. Есть ли для этого какие-т предпосылки? Какие преимущества при использовании классов для назначения констант по сравнению с обычным способом через define?
 
 Top
OrmaJever Модератор
Отправлено: 07 Марта, 2017 - 20:20:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




грубо говоря их можно групировать, аналог неймспейсов
PHP:
скопировать код в буфер обмена
  1. Config::db_name
  2. App::lang
  3. User::cookie


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Строитель Модератор
Отправлено: 07 Марта, 2017 - 20:35:48
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Perun пишет:
по сравнению с обычным способом через define?
Их можно и не обычным способом объявлять, вообще без класса :

const ONE = 1;
echo ONE;

Но с некоторыми ограничениями, в сравнении с define().
 
 Top
Perun
Отправлено: 07 Марта, 2017 - 20:44:44
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




OrmaJever пишет:
аналог неймспейсов

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

Интересно именно использование классов в контексте констант
 
 Top
Строитель Модератор
Отправлено: 07 Марта, 2017 - 22:24:48
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Perun пишет:
Начал читать про пространства имен относительно классов, запутался еще больше...
Вы умеете работать с пользовательскими функциями? Если да, то можно провести аналогию между областью видимости локальных переменных внутри пользовательских функций, и областью видимости классов в пространствах имён.

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

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



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Perun пишет:
Начал читать про пространства имен относительно классов, запутался еще больше...

Ну блин, если делать в пространствах имён то вызов будет такой
\Config\db_name
а в классе
Config::db_name
Дело вкуса, но второй вариант веселее


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
armancho7777777 Супермодератор
Отправлено: 08 Марта, 2017 - 17:11:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Perun пишет:
Какие преимущества при использовании классов для назначения констант по сравнению с обычным способом через define?

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

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

P.S. http://forum.php.su/topic.php?fo...21811#1488521811
 
 Top
Perun
Отправлено: 08 Марта, 2017 - 18:25:23
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




спасибо за ответы!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB