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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Roni
Отправлено: 22 Марта, 2013 - 06:49:29
Post Id


Новичок


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


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




Как делаете вы?

PHP:
скопировать код в буфер обмена
  1.  
  2. // Вариант 1
  3. define("ROOT",$_SERVER['DOCUMENT_ROOT'].'/');
  4. define('MODULES_DIR', ROOT."modules/");
  5. include(MODULES_DIR.'file.php')
  6.  
  7. // Вариант 2
  8. define("ROOT",$_SERVER['DOCUMENT_ROOT']);
  9. define('MODULES_DIR', ROOT."/modules");
  10. include(MODULES_DIR.'/file.php')
 
 Top
DeepVarvar Супермодератор
Отправлено: 22 Марта, 2013 - 06:58:44
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Вариант 1, потому, что так префиксы справа больше похожи на относительные пути.
 
 Top
armancho7777777 Супермодератор
Отправлено: 22 Марта, 2013 - 07:52:06
Post Id



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


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


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




Вариант 2
 
 Top
LIME
Отправлено: 22 Марта, 2013 - 09:43:47
Post Id


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


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


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




Roni а почему ты уверен что слеш уже не стоит в DR?
ты всегда будешь иметь возможность контролировать конфиг веб-сервера?
(Добавление)
а кроме этого как тебе уже говорили выше....ответ: побарабану
 
 Top
DelphinPRO
Отправлено: 22 Марта, 2013 - 09:48:24
Post Id



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


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


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




второй вариант общепринят везде.
я тоже использую его.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Vinyl
Отправлено: 22 Марта, 2013 - 09:52:03
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012  
Откуда: Армавир, Краснодарский край


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




Я тоже вторым пользуюсь
(Добавление)
Поставить где надо его будет намного проще, чем убрать Подмигивание


-----
Пессимисты пользуются die(), оптимисты - exit()
 
 Top
LIME
Отправлено: 22 Марта, 2013 - 09:53:29
Post Id


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


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


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




ага...особенно если их будет в итоге 2 подряд
 
 Top
DeepVarvar Супермодератор
Отправлено: 22 Марта, 2013 - 10:20:36
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Vinyl пишет:
Поставить где надо его будет намного проще, чем убрать
Это смотря с какой стороны посмотреть - с конца или с начала ты будешь дописывать.

Почему все используют второй?

Знаете что в окружении скрипта не всегда присутствует или присутствует, но не всегда корректный $_SERVER['DOCUMENT_ROOT']?
Видимо это знают не все, или не приходилось встречаться с этим ранее.

Тогда:
Знаете что означает слеш в начале?
Знаете - корень файловой системы (*NIX).
Видимо знают не все, или не приходилось встречаться ранее, что отсутствие слеша означает текущий каталог запущенного приложения, в данном случае - интерпретатора, (например /usr/bin/php).

Тогда:
Корректно поставить в "точке входа" текущий каталог без chdir() и $_SERVER['DOCUMENT_ROOT'] так:

Так вы будете оперировать относительно ROOT относительными путями.

ИМХО...
 
 Top
LIME
Отправлено: 22 Марта, 2013 - 10:34:55
Post Id


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


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


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




DeepVarvar пишет:
Так вы будете оперировать относительно ROOT относительными путями.
и это может пригодиться при подключении файлов из include_path
 
 Top
DeepVarvar Супермодератор
Отправлено: 22 Марта, 2013 - 11:08:15
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




LIME пишет:
и это может пригодиться при подключении файлов из include_path
Именно.
 
 Top
NoPaper
Отправлено: 22 Марта, 2013 - 11:18:01
Post Id



Посетитель


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


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




Roni пишет:
Как делаете вы?

Так:
PHP:
скопировать код в буфер обмена
  1.  
  2. define('S'      ,DIRECTORY_SEPARATOR);
  3. define('DIR',__DIR__.S);
  4. define('MODULE',DIR.'module'.S);
  5.  
  6. include MODULE.'index.php';
  7.  

(Отредактировано автором: 22 Марта, 2013 - 11:20:30)

 
 Top
caballero
Отправлено: 22 Марта, 2013 - 11:34:18
Post Id


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


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


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




первый вариант

в первых - если костанта папка а не файл, логично что она заканчивается слешом
во вторых не надо втыкать потом каждый раз слеш
в третьих слеш вначале каждого присоединяемого куска визуально путает с относительными путями

на самом деле какой вариант не существенно - важно вывработать однобразный стиль чтобы на автомате кодитьодинаково не задумываясь есть там слеш или нет.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Roni
Отправлено: 22 Марта, 2013 - 12:56:54
Post Id


Новичок


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


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




LIME пишет:
а почему ты уверен что слеш уже не стоит в DR?
Вообще с этого вопрос и пошел, хочется стандартизировать, и не гадать, в каких константах есть слеш, в каких нет. Т.к. столкнулся с тем. что в WINNT, выдается DR уже со слешем... поэтому пока решил писать так

PHP:
скопировать код в буфер обмена
  1. if ( substr($_SERVER['DOCUMENT_ROOT'],-1,1) == '/' ){
  2.         define("ROOT",$_SERVER['DOCUMENT_ROOT']);
  3. }else{
  4.         define("ROOT",$_SERVER['DOCUMENT_ROOT'].'/');
  5. }

(Отредактировано автором: 22 Марта, 2013 - 12:57:57)

 
 Top
armancho7777777 Супермодератор
Отправлено: 22 Марта, 2013 - 13:17:53
Post Id



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


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


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




Тогда уж так:
PHP:
скопировать код в буфер обмена
  1. define("ROOT", rtrim($_SERVER['DOCUMENT_ROOT'], '/') . '/');
 
 Top
LIME
Отправлено: 22 Марта, 2013 - 13:18:10
Post Id


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


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


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




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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB