Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: работа с константами (const)

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, есть такой готовый вариант кодов:
 

Код:
const SITE_CVAR = Array(
    "TP1" => 10,
    "TP2" => 86400*date('t')
);

 
Выдает такую ошибку изза date('t'):

Код:
Parse error: syntax error, unexpected '(', expecting ')' in D:\....\.....php on line 8

 
Вопрос, как её исправить, чтоб можно было использовать date('t')?
 

Код:
const USER = Array("id" => $session->id, "login" => $session->login);

 
Тоже ошибка:

Код:
Parse error: syntax error, unexpected 'const' (T_CONST) in D:\......\....php on line 44

 
Как это тоже исправить?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 18:44 13-09-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
Const - только для использования внутри класса, иначе курить функцию define. Если внутри класса, то никаких функций в области определения - инициализировать в конструкторе или любом другом методе класса.
Для второго - ошибка НАД этой строкой.

Всего записей: 15023 | Зарегистр. 20-09-2014 | Отправлено: 18:56 13-09-2016 | Исправлено: Mavrikii, 18:58 13-09-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Похоже константу нельзя объявить в проверке if()
 
Добавлено:
Как можно через define() сделать массив? я не могу найти примеров в сети....
И define можно использовать в теле if()?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 19:22 13-09-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
Примеры насчёт if
Массивы можно определять только в php7

Всего записей: 15023 | Зарегистр. 20-09-2014 | Отправлено: 19:28 13-09-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Код:
if(true) const USER = Array("id" => $session->id, "login" => $session->login);

 

Цитата:
Массивы можно определять только в php7

можно краткий пример?)

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 19:38 13-09-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
можно краткий пример?)

1) поставить php7
2) использовать вышеупомянутую конструкцию.
 

Цитата:
if(true) const USER = Array("id" => $session->id, "login" => $session->login);

я же написал - const используется только в классе для определения констант.
 

Код:
class Foo {
  const var = 1;
}

 
http://php.net/manual/ru/language.constants.php

Всего записей: 15023 | Зарегистр. 20-09-2014 | Отправлено: 20:20 13-09-2016 | Исправлено: Mavrikii, 20:21 13-09-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
использовать вышеупомянутую конструкцию.  

какую именно? У меня она и так работает, но нельзя использовать PHP код в константе.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 20:55 13-09-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
какую именно? У меня она и так работает

тогда зачем спрашивали о массивах? я писал, что массив через define можно определить только в php7
http://php.net/manual/en/function.define.php

Цитата:
The value of the constant. In PHP 5, value must be a scalar value (integer, float, string, boolean, or NULL). In PHP 7, array values are also accepted.

 

Цитата:
но нельзя использовать PHP код в константе.

нельзя, что логично.
в классе это нельзя делать не только в константе, но и при инициализации всех переменных класса. Такие вещи делаются в конструкторе.
 

Всего записей: 15023 | Зарегистр. 20-09-2014 | Отправлено: 20:58 13-09-2016 | Исправлено: Mavrikii, 21:00 13-09-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Я понял.
а как вы посоветуете? Как лучше?
У меня есть "важные данные", такие как (настройки сайта, настройки доступа к БД, и т.д.) их лучше хранить в define() или лучше в переменной с массивом?
Я думаю перейти полностью на define(), но тут снова вопрос, если использовать множество переменных define() (свыше 100), это будет допустимо? И лучше чем 100 переменных?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 21:07 13-09-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
У меня есть "важные данные", такие как (настройки сайта, настройки доступа к БД, и т.д.) их лучше хранить в define() или лучше в переменной с массивом?  
Я думаю перейти полностью на define(), но тут снова вопрос, если использовать множество переменных define() (свыше 100), это будет допустимо? И лучше чем 100 переменных?

да как хочется и как удобнее. константы в общем случае предназначены для защиты от случайного переопределения, ну и глобального доступа. можно вообще все определить внутри отдельной/статической функции (или класса), которая будет возвращать нужный параметр по ключу.

Всего записей: 15023 | Зарегистр. 20-09-2014 | Отправлено: 21:10 13-09-2016 | Исправлено: Mavrikii, 21:10 13-09-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
удобней через define() или переменные. Т.к. они могут определятся по всему сайту.
но вопрос такой, множественное использование define() допустимо?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 21:14 13-09-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
но вопрос такой, множественное использование define() допустимо?

да насколько памяти хватит, с чего там должны быть какие то ограничения?

Всего записей: 15023 | Зарегистр. 20-09-2014 | Отправлено: 21:16 13-09-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
с чего там должны быть какие то ограничения

Малоли.... Вдруг есть что-то такое)
Спасибо за ответы.
 
P.S. оставлю пример использования define() с массивом (только для PHP7+):

Код:
define("name", Array(1, 15, 25));

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 21:23 13-09-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
define('name', [1, 15, 25]);

Всего записей: 15023 | Зарегистр. 20-09-2014 | Отправлено: 21:26 13-09-2016 | Исправлено: Mavrikii, 21:26 13-09-2016
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: работа с константами (const)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru