За последние 24 часа нас посетили 5258 программистов и 682 робота. Сейчас ищут 200 программистов ...

путь к корню сайта

Тема в разделе "PHP для новичков", создана пользователем _ne_scaju_, 15 авг 2019 в 08:50.

  1. _ne_scaju_

    _ne_scaju_ Активный пользователь

    С нами с:
    25 ноя 2016
    Сообщения:
    1.857
    Симпатии:
    104
    Объясните мне какая из данных конструкций в этом случае лучше?
    PHP:
    1.   $s = $_SERVER['DOCUMENT_ROOT'];
    2.   define('ds' , DIRECTORY_SEPARATOR);
    3.   define('d', dirname(__DIR__) . '/' );
    4.   define('f', dirname(__FILE__) . '/' );
    Какая конструкция будет предпочтительна для корня сайта?
     
  2. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    1.726
    Симпатии:
    256
    $_SERVER['DOCUMENT_ROOT'] использовать допустимо. Только там обычно значение без трэйлинг слэша.

    Из оставшегося допустимы две последние (константа __DIR__ позже появилась), только они указывают на разные места и задают путь относительно места определения.
     
    #2 miketomlin, 15 авг 2019 в 11:43
    Последнее редактирование: 15 авг 2019 в 11:55
  3. _ne_scaju_

    _ne_scaju_ Активный пользователь

    С нами с:
    25 ноя 2016
    Сообщения:
    1.857
    Симпатии:
    104
    По поводу dir file когда дебажил я увидел их разницу что они указывают путь от той папки где находится файл, хотя даже и в них есть разница, какая-то из них выводит путь на одну папку меньше, пример:
    d\web\domains\site\app\config
    d\web\domains\site\app
    Файл находится в папке конфиг.
    По поводу $_SERVER['DOCUMENT_ROOT'] предпочтительно использовать её?
     
  4. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    1.726
    Симпатии:
    256
    Такие константы лучше во фронте задавать. Ведь сам конфиг тоже нужно как-то подключать.

    Нет. Для фронта и его «дочерних скриптов» еще можно.
    --- Добавлено ---
    P.S. Ну в принципе корень можно и в конфиге задать, а местоположение php-файлов – во фронте. Только некрасиво, что будут разные «точки отсчета». Больше путаницы.
     
    #4 miketomlin, 15 авг 2019 в 16:18
    Последнее редактирование: 15 авг 2019 в 16:25
  5. _ne_scaju_

    _ne_scaju_ Активный пользователь

    С нами с:
    25 ноя 2016
    Сообщения:
    1.857
    Симпатии:
    104
    где можно почитать, использование для mvs, данных констант как это вообще реализуется или принцип для всех один.
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    5.584
    Симпатии:
    905
    Адрес:
    Лень
    ЧПУ единой точкой не решает ?
     
  7. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    1.726
    Симпатии:
    256
    См., о чем речь: определение через маг. константы из разных файлов (непосредственно фронта и конфига).
    --- Добавлено ---
    MVC? Это тут побоку. Единый фронт (единая точка входа) есть?
     
  8. _ne_scaju_

    _ne_scaju_ Активный пользователь

    С нами с:
    25 ноя 2016
    Сообщения:
    1.857
    Симпатии:
    104
    да есть единая точка входа.
     
  9. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    1.726
    Симпатии:
    256
    Ну вот желательно прямо в ней подобные константы задавать. Если их много, можешь задать «пару» базовых, а все остальные уже определяй через эти базовые.
    --- Добавлено ---
    Я обычно задаю путь к общим (для нескольких проектов!!!) либам, путь к тек. проекту или к его php-скриптам, ну и корень, когда он нужен. Фронт может лежать прямо в каталоге проекта или в корне.
    --- Добавлено ---
    В принципе если задавать путь к проекту, то корень можно отдельно не указывать, если ты всегда используешь одно и то же имя корня, т.к. он обычно располагается прямо в каталоге проекта. Я обычно указываю корень отдельно, чтобы было проще подстраиваться под тек. окружение, т.к. в разном окружении он может называться по-разному (docs, public, public_html и т.п.).
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    5.584
    Симпатии:
    905
    Адрес:
    Лень
    пишу о том, что все будет работать непосредственно через одну точку. Файлы разные тут вовсе не причем. Там же двиг сам разберется, что к чему. С внешке не должно идти прямо к файлу.
     
    #10 MouseZver, 16 авг 2019 в 00:23
    Последнее редактирование: 16 авг 2019 в 00:33
  11. _ne_scaju_

    _ne_scaju_ Активный пользователь

    С нами с:
    25 ноя 2016
    Сообщения:
    1.857
    Симпатии:
    104
    я создал файл конф в нем прописал констант, и этот файл подключаю в index файле, а вот что правильно использовать так и не понял)
     
  12. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    1.726
    Симпатии:
    256
    В общем две последние (на выбор). Если нужно независимо от какой-либо точки отсчета и в Web-фронте (не в крон-обработчике и т.п.), то можно и $_SERVER['DOCUMENT_ROOT'].

    Вопрос в том, как подключаешь. Местоположение конфига относительно фронта тоже нужно как-то задавать, если конечно у тебя конфиг не обязан лежать в том же каталоге, что и фронт :)
     
  13. _ne_scaju_

    _ne_scaju_ Активный пользователь

    С нами с:
    25 ноя 2016
    Сообщения:
    1.857
    Симпатии:
    104
    короче создал в index файле эту константу __DIR__ буду от этого отталкиваться.