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 :: Память запросов в константах и переменных
Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010
Помог: 3 раз(а)
Задался вопросом, как поступает php, если переменной или константе присвоена функция с запросом с последующим выводом этой переменной/константы?
Покажу на примере:
$username= username(3);// или define('USERNAME', username(3));
Теперь если я сделаю, допустим, 5 обращений к данной переменной $username или к константе USERNAME, будет ли повторно производиться запрос к таблице users, или же $username делает запрос единожды при присвоении?
И как в таком случае, поступит php, если обратиться не к этой переменной/константе, а напрямую к функции username()?
EuGen
Отправлено: 27 Августа, 2013 - 20:38:15
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Константа вычислится единожды при вызове define и не будет далее переопределена никаким образом. Константа есть просто статическое значение, попадающее в результирующий опкод после интерпретации исходного скрипта.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
soleg
Отправлено: 27 Августа, 2013 - 21:19:16
Гость
Покинул форум
Сообщений всего: 71
Дата рег-ции: Окт. 2011
В переменную $username ты передаёшь только значение возвращаемое функцией, а не саму функцию.
Цитата:
будет ли повторно производиться запрос к таблице users
не будет, почему написано выше.
Цитата:
И как в таком случае, поступит php, если обратиться не к этой переменной/константе, а напрямую к функции username()
Вернёт результат выполнения этой функции
EuGen пишет:
Константа вычислится единожды при вызове define и не будет далее переопределена никаким образом. Константа есть просто статическое значение, попадающее в результирующий опкод после интерпретации исходного скрипта.
VestCoastman
Отправлено: 27 Августа, 2013 - 22:14:38
Посетитель
Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.