Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > PHP path separator


Автор: Royan 26.7.2007, 23:19
Есть грубый подход к определению path separator'а:

Код

strstr(PHP_OS, "WIN") ? $strPathSeparator = ";" : $strPathSeparator = ":";


Это не наши методы. Возможно ли вернуть с помощью вызова какой-нибудь служебной функции из серии System.getProperties() в java текущий для оси разделитель переменных среды? 

Автор: Diesel Draft 27.7.2007, 00:02
Что то я не пойму вопрос

Автор: sTa1kEr 27.7.2007, 00:38
Цитата(Royan @  26.7.2007,  23:19 Найти цитируемый пост)
Это не наши методы. Возможно ли вернуть с помощью вызова какой-нибудь служебной функции из серии System.getProperties() в java текущий для оси разделитель переменных среды?  

Да, существует предопределенная константа PATH_SEPARATOR. Т.е. вы можете ничего не определять, а сразу использовать эту константу. Так же существует константа DIRECTORY_SEPARATOR для разделения директорий соответственно.
Цитата(Diesel Draft @  27.7.2007,  00:02 Найти цитируемый пост)
Что то я не пойму вопрос 

Что именно вы не поняли? 
http://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B5%D0%B4%D0%B0_%D0%BE%D0%BA%D1%80%D1%83%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F
http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BA%D1%83%D1%89%D0%B8%D0%B9_%D0%BF%D1%83%D1%82%D1%8C
В *nix-ах и Windows для разделение путей используются разные символы. Для Windows ";", а для *nix-ов ":". В этом и заключался вопрос, как просто и правильно получить этот символ.

Автор: GZep 27.7.2007, 10:20
Цитата(Royan @  26.7.2007,  23:19 Найти цитируемый пост)
Возможно ли вернуть с помощью вызова какой-нибудь служебной функции из серии System.getProperties()

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

Автор: Fally 27.7.2007, 10:25
Код

$sep = isset($GLOBALS["ComSpec"]) ? ';' : ':'

Автор: Diesel Draft 27.7.2007, 10:54
Теперь ясно. А чем ваш код не нравится.
Код

strstr(PHP_OS, "WIN") ? $strPathSeparator = ";" : $strPathSeparator = ":";


Кстати можно переписать так
Код

$strPathSeparator  = strstr(PHP_OS, "WIN") ? ";" : ":";

Автор: GZep 27.7.2007, 22:01
На этот случай лучше константы использовать... ну или хотябы не такие длинные переменные.

Автор: Anarki 27.7.2007, 22:53
Цитата(Fally @ 27.7.2007,  13:25)
Код

$sep = isset($GLOBALS["ComSpec"]) ? ';' : ':'

Не будет ее там. 
Разве что тут
Код

$GLOBALS['_ENV']['ComSpec']



Код на всякий случай.
Код

if (!defined("PATH_SEPARATOR"))
  define("PATH_SEPARATOR", getenv("COMSPEC")? ";" : ":");

Автор: Royan 29.7.2007, 16:45
Всем спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)