За последние 24 часа нас посетили 22257 программистов и 1064 робота. Сейчас ищут 738 программистов ...

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

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

  1. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Объясните мне какая из данных конструкций в этом случае лучше?
    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
    Сообщения:
    3.792
    Симпатии:
    650
    $_SERVER['DOCUMENT_ROOT'] использовать допустимо. Только там обычно значение без трэйлинг слэша.

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

    _ne_scaju_ Старожил

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

    miketomlin Старожил

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

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

    _ne_scaju_ Старожил

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

    MouseZver Суперстар

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

    miketomlin Старожил

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

    _ne_scaju_ Старожил

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

    miketomlin Старожил

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

    MouseZver Суперстар

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

    _ne_scaju_ Старожил

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

    miketomlin Старожил

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

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

    _ne_scaju_ Старожил

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

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Прям "ничтоже сумняшеся" взял и переопределил магическую константу __DIR__?
     
  15. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
  16. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    :D

    __DIR__ == dirname(__FILE__) ;) Я тебе писал, в чем разница. __FILE__ имеет смысл использовать для совместимости с более старыми версиями пыха. В 5.4 __DIR__ уже есть (сейчас это минималка для актуальных версий нашего софта).

    Или ты древний пых используешь? :)
     
  17. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    когда тестил в index файл я писал dir, мне таким способом приходится еще в файлах добавлять папку, а если использую file он мне реально корень сайта отдает, то что мне нужно, я использую php 7.3 а актуальная 7.4 в опен сервере ее еще нет :D
    по поводу актуальности я понял, что __FILE__ для более старых версий, и что предпочтительней использовать __DIR__ но с ним чет не хочет дружится файлы мои :)