DIRECTORY_SEPARATOR и PATH_SEPARATOR

В php есть замечательные предопределенные константы - DIRECTORY_SEPARATOR и PATH_SEPARATOR. Нужны они для того, чтобы скрыть различия в путях между линуксом и виндой. И хоть эти вещи для многих очевидны - всегда найдется парень, который про это не в курсе и натворит бед. Так вот, чтобы отделять директории, нужно юзать DIRECTORY_SEPARATOR - ну, например 'images' . DIRECTORY_SEPARATOR . 'upload' . Да-да, я знаю, все и так используют символ '/' для разделения путей, потому что это работает и в винде, где он не родной, и в линухе. Можно сказать, что константа DIRECTORY_SEPARATOR в принципе нафиг не нужна, если юзать '/' вместо '\' , но это правильно и создает уверенность что все будет зашибись, где бы это не запустилось.

А вот про вторую константу PATH_SEPARATOR мало кто знает :) а все потому что include_path (в частности set_include_path() ) очень редко где используется. Я бы и сам никогда не узнал про это и не наступил бы на некоторые грабли, если бы не Zend Framework, который установить нестандартно без переопределения include_path очень тяжело.

Итак, include_path - настройка, которую можно переопределять в скриптах. Работает это так - когда делается require 'somefile.php';  - интерпретатор вначале ищет файл в той же папке, что и запускаемый скрипт, если не находит, он начинает искать этот же файл в других папках, указанных в include_path. Штука полезная, однако есть подводный камень - include_path - это строка, папки разделены разделителем - причем в винде это ';' а в линухе':'. Тут-то нам и нужна эта константа, которая позволит скриптам запускаться и там и там без лишних конфигов или изменений кода.

делаем сайт из шаблона - инструкция по применению

Комментарии (13) на “DIRECTORY_SEPARATOR и PATH_SEPARATOR”

  1. Ash:

    Спасибо. Как раз из-за незнания DIRECTORY_SEPARATOR на локальном сервере постоянно ошибки были, т.к. в динамически сформированном пути ставились то ‘/’, то ‘\’… А эта переменная все решила :)

  2. admin:

    пожалуйста, приятно видеть, что твои труды кому-то помогают :)

  3. Сергей:

    Спасибо огромное. Сразу все прояснилось. Пытаюсь осилить ZF и тут эти сепараторы. Всю голову сломал. И вот наконец получил ответы. Еще раз спасибо!

  4. Oleg:

    Подчерпнул инфу о сабже на вашем сайте, спасибо :)

  5. CrazyLamer:

    Большое спасибо, очень помогло)

  6. Жоня:

    Спасибо! Помогло и даже очень:)

  7. vetal:

    пост написанный один раз - приносит пользу неоднократно! Спасибо!

  8. kaleb:

    присоединяюсь к поблагодарившим!!! СПАСИБО!))))

  9. Спасибо, как раз то, что нужно. Тоже разбираюсь с Zend-ом. Хочу полностью понять,что написано в файлах index.php и bootstrap.php

  10. спасибо за паз сепаратор ))

  11. sawa:

    Спасибо!

  12. Максим:

    Только начал изучать ZF и тут же наткнулся на непонятности…. БлагоДарю за прояснение!!! Очень благодарен!!!!

  13. mbmax:

    Отличная статья, все сразу стало понятно, почерпнул нового!

Оставить комментарий

В Вашем браузере отключена поддержка JavaScript! Для корректной работы Вам необходимо включить поддержку JavaScript и обновить данную страницу.

Информеры с тИЦ и PR: получить код для сайта
Барахолка Москвы - интернет спутниковый. Работа в интернете. . Объективные обзоры проверенных интернет казино.