Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Константы в PHP, Использование констант внутри кавычек 
:(
    Опции темы
iishelp
Дата 24.12.2008, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 6.3.2008

Репутация: нет
Всего: нет



Есть константа
Код

define("CONST_NAME","Some value");


Как к ней обратиться внутри кавычек:
Код

print "Значение константы - ${CONST_NAME}";

Так можно, только если CONST_NAME была переменной. Есть ли похожий вариант для констант, а то приходится писать так:
Код

print "Значение константы - ".CONST_NAME;

что бывает иногда неудобно?
PM MAIL   Вверх
Рыжий
Дата 24.12.2008, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 2
Всего: 20



iishelp, последний вариант - правильный вариант написания, используйте его.
PM MAIL ICQ   Вверх
bars80080
Дата 24.12.2008, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



прямо скажем, включение любой переменной/константы внутрь кавычек - есть зло, за которое приходится платить программисту если уж не горючими слезами, так потерянным временем на поиски дубовых ошибок
PM MAIL WWW   Вверх
godvinn
Дата 24.12.2008, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

Репутация: 1
Всего: 1





--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
skyboy
Дата 25.12.2008, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



godvinn, вопрос топикстартера читал?

Добавлено через 18 секунд
iishelp, брсь это дело. 
PM MAIL   Вверх
Валерия
Дата 29.12.2008, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 10.3.2007

Репутация: 3
Всего: 8



А что плохого в "$var1 $var2" ?
PM MAIL   Вверх
GZep
Дата 29.12.2008, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



помню перечислялось сразу несколько причин не использовать переменные внутри кавычек. Если честно лень искать smile 

скажу так (сейчас так модно smile ) переменные в кавычках - сакс))))


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
theworldcreator
Дата 29.12.2008, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 362
Регистрация: 25.8.2007
Где: Москва

Репутация: 10
Всего: 13



Некрасиво/не принято. Плюс работодатель может воспринять как признак непрофессионализма(я бы воспринял по крайней мере).
Раньше говорили о быстродействие, сейчас плевать - и то и то настолько нетребовательно к ресурсам, что даже при разнице в два раза практической выгоды считайте ноль.
PM MAIL WWW ICQ   Вверх
Dima 2015
Дата 29.12.2008, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 16.3.2008
Где: SPb

Репутация: 2
Всего: 2



theworldcreator, неужели и внутри sql-запросов воспринял бы?
PM MAIL ICQ   Вверх
bars80080
Дата 29.12.2008, 02:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



не знаю как насчёт профессионализма, а вот читабельность резко ухудшается при загоне переменных внутрь кавычек. плюс ещё надо тратить время на осознание, как там они должны указываться
PM MAIL WWW   Вверх
theworldcreator
Дата 29.12.2008, 02:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 362
Регистрация: 25.8.2007
Где: Москва

Репутация: 10
Всего: 13



Dima 2015 угу. Хотя у меня мало опыта работы с чужим кодом, но сам всегда пишу либо так:
Код

$var = quote_smart($_POST['var']);
$rs = mysql_query('SELECT * FROM table WHERE some = "'.$val.'"');

Либо так:
Код

$rs = mysql_query('SELECT * FROM table WHERE some = "'.quote_smart($_POST['var']).'"');

В таком случае применил бы второй вариант, но когда операций с данными больше чем один вызов функции, бывает читабельнее введение новой переменной. Функция quote_smart() взята из мануала PHP - ссылка.
P.S. разумеется я не копирую всякий раз этот код, а действую по ситуации, но общие правила оформления такие.
PM MAIL WWW ICQ   Вверх
bars80080
Дата 29.12.2008, 03:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



что за quote_smart? почему не знаю? почему нет в http://php.ru/manual/index.functions.html ?
чем отличается от mysql_real_escape_string(); ?



я б кстати посоветовал бы сам запрос выносить в отдельную переменную, а не формировать его прямо в функции. у меня пожизни он сильно составной из переменных с условиями
PM MAIL WWW   Вверх
Sanchezzz
  Дата 29.12.2008, 06:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Лично мое мнение в константах лучше хранить переменные которые и не будешь изменять в дальнейшем настройки соединения бд путь от рутной директории и большой плюс в константах, что их можно использовать внутри класса любой вложенности.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
nerezus
Дата 29.12.2008, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

А что плохого в "$var1 $var2" ?
 Ничего, это в стиле Zend очень даже допускается.

По крайней мере не так ужасно, как оптимизация(точнее обфускация) через '' . $ . '' . $ . ''

Добавлено через 53 секунды
Цитата

а вот читабельность резко ухудшается при загоне переменных внутрь кавычек
 Почему? Хватит использовать блокнот, скачай редактор с подсветкой.
Переменные внутри кавычек очень хорошо выделяются ;)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
solenko
Дата 29.12.2008, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Sanchezzz, а как ваше высказываие относится к теме?

theworldcreator, 
Цитата(theworldcreator @  29.12.2008,  01:39 Найти цитируемый пост)
$var = quote_smart($_POST['var']);$rs = mysql_query('SELECT * FROM table WHERE some = "'.$val.'"');

Вообще-то это считается дурным тоном.
1. Заброс лучше формировать в переменной и потом уже скармливать функции, т.к. это потом облегчает отладку -- легко можно вывести/залоггировать именно тот запрос который выполняется
2. Подстановку параметров конкатенацией строк принято считать злом ,т.к. это во-первых добавляет возможности для ошибки, во-вторых нужно еще понять что ты конкатенируеш (кусок запроса самого или таки параметры), в-трерих  тяжелее переписывать на db-lib которая поддерживает плейсхолдеры. А хорошим тоном считается таки использование плейсхолдеров. Если их не поддерживает dblayer то эмуляция через тот же sprintf

bars80080, quote_smart -- своя функция. theworldcreator приводил пару дней назад ее код в своей теме о безопасности


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.