Объясните мне какая из данных конструкций в этом случае лучше? PHP: $s = $_SERVER['DOCUMENT_ROOT']; define('ds' , DIRECTORY_SEPARATOR); define('d', dirname(__DIR__) . '/' ); define('f', dirname(__FILE__) . '/' ); Какая конструкция будет предпочтительна для корня сайта?
$_SERVER['DOCUMENT_ROOT'] использовать допустимо. Только там обычно значение без трэйлинг слэша. Из оставшегося допустимы две последние (константа __DIR__ позже появилась), только они указывают на разные места и задают путь относительно места определения.
По поводу dir file когда дебажил я увидел их разницу что они указывают путь от той папки где находится файл, хотя даже и в них есть разница, какая-то из них выводит путь на одну папку меньше, пример: d\web\domains\site\app\config d\web\domains\site\app Файл находится в папке конфиг. По поводу $_SERVER['DOCUMENT_ROOT'] предпочтительно использовать её?
Такие константы лучше во фронте задавать. Ведь сам конфиг тоже нужно как-то подключать. Нет. Для фронта и его «дочерних скриптов» еще можно. --- Добавлено --- P.S. Ну в принципе корень можно и в конфиге задать, а местоположение php-файлов – во фронте. Только некрасиво, что будут разные «точки отсчета». Больше путаницы.
где можно почитать, использование для mvs, данных констант как это вообще реализуется или принцип для всех один.
См., о чем речь: определение через маг. константы из разных файлов (непосредственно фронта и конфига). --- Добавлено --- MVC? Это тут побоку. Единый фронт (единая точка входа) есть?
Ну вот желательно прямо в ней подобные константы задавать. Если их много, можешь задать «пару» базовых, а все остальные уже определяй через эти базовые. --- Добавлено --- Я обычно задаю путь к общим (для нескольких проектов!!!) либам, путь к тек. проекту или к его php-скриптам, ну и корень, когда он нужен. Фронт может лежать прямо в каталоге проекта или в корне. --- Добавлено --- В принципе если задавать путь к проекту, то корень можно отдельно не указывать, если ты всегда используешь одно и то же имя корня, т.к. он обычно располагается прямо в каталоге проекта. Я обычно указываю корень отдельно, чтобы было проще подстраиваться под тек. окружение, т.к. в разном окружении он может называться по-разному (docs, public, public_html и т.п.).
пишу о том, что все будет работать непосредственно через одну точку. Файлы разные тут вовсе не причем. Там же двиг сам разберется, что к чему. С внешке не должно идти прямо к файлу.
я создал файл конф в нем прописал констант, и этот файл подключаю в index файле, а вот что правильно использовать так и не понял)
В общем две последние (на выбор). Если нужно независимо от какой-либо точки отсчета и в Web-фронте (не в крон-обработчике и т.п.), то можно и $_SERVER['DOCUMENT_ROOT']. Вопрос в том, как подключаешь. Местоположение конфига относительно фронта тоже нужно как-то задавать, если конечно у тебя конфиг не обязан лежать в том же каталоге, что и фронт
не понял тебя, ах да __DIR__ мне не подошла, использую __FILE__ PHP: define('f', dirname(__FILE__) );
__DIR__ == dirname(__FILE__) Я тебе писал, в чем разница. __FILE__ имеет смысл использовать для совместимости с более старыми версиями пыха. В 5.4 __DIR__ уже есть (сейчас это минималка для актуальных версий нашего софта). Или ты древний пых используешь?
когда тестил в index файл я писал dir, мне таким способом приходится еще в файлах добавлять папку, а если использую file он мне реально корень сайта отдает, то что мне нужно, я использую php 7.3 а актуальная 7.4 в опен сервере ее еще нет по поводу актуальности я понял, что __FILE__ для более старых версий, и что предпочтительней использовать __DIR__ но с ним чет не хочет дружится файлы мои