@MaMkO

Как реализовать единую точку входа, которая может находиться в любом месте?

Здравствуйте, пишу простой MVC-фреймворк. Возник такой вопрос: необходимо сделать так, чтобы точка входа могла располагаться в любом месте, т.е. не
localhost/
а например
localhost/test/doubleTest/

Вопрос возникает с подключением других файлов из точки входа. Будет ли правильным подходом использовать $_SERVER['DOCUMENT_ROOT']? Например:
require_once $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php';


Или у данного способа есть подводные камни и есть какой-то другой более правильный метод?
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
php666
@php666
PHP-макака
1. Не надо писать свой "простой MVC-фреймворк", ты его не напишешь в ближайшие годы, только потеряешь время. Возьми Ларавел.

2.
require_once $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php';

DOCUMENT_ROOT указывается в конфиге сервера, соответственно это не будет работать для localhost/test/doubleTest/, если DOCUMENT_ROOT указан как localhost/

Обычно DOCUMENT_ROOT в подобных случаях устанавливается явно, вот так, на примере файла по адресу /config/constatnts.php:
define('DOCUMENTROOT_PATH', dirname(dirname(__FILE__)));

тут кол-во dirname зависит от глубины вложенности файла.
При подключении в единую точку входа index.php
// index.php
include '. /config/constatnts.php';

echo DOCUMENTROOT_PATH; // правильный doc root

DOCUMENTROOT_PATH будет содержать реальный document root.

Cл-но ты можешь расположить проект где угодно, как в localhost/, так и в localhost/test/doubleTest/
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
netrox
@netrox
То что вы упомянули называется роутингом. Точка входа обычно находится public/index.php.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы