Я действительно смущен о PHP и системе путей.PHP и пути - относительно файла и не включая код
У меня есть эта структура:
- Includes
- Login
- View
* Secure
Это все каталоги на моем сайте. Теперь, если я поместить файлы в папке «View», я могу получить доступ к файлам в моем Включает папку с:
"../Includes/file.php"
Если я хочу, чтобы включить один и тот же файл из защищенного каталога, я хотел бы сделать:
"../../Includes/file.php"
Все в порядке, но вот здесь мне становится сложно.
Если файл, который я пытаюсь импортировать (файл.php в каталоге Includes), ТАКЖЕ включает файл, он все выкинет. Говорят, что файл будет включать файл в «Логин», он должен был бы быть одним из них 2 включает в себя, все в зависимости от того, если код, который включает в себя это находится в защищенной или Посмотреть каталог:
"../Login/file.php" -> if it was included from the View directory
"../../Login/file.php" -> if it was included from the Secure directory.
Очевидно, что эта проблема только становится все хуже и хуже. Может быть, то, что мне нужно, - это путь к тому, чтобы путь был относительно самого FILE, а не код?
На другой заметке, я догадываюсь, что я действительно нахожусь, как обрабатывать все это, включая «ад» в PHP? Я чувствую, что я связываю свою структуру плотно и что я не могу сильно изменить, не нарушая все. Поэтому любые советы о том, как справиться с этим, очень ценятся.
Таким образом, вы фактически рекомендуем строить абсолютные пути, хотя. явным недостатком является более высокая связь между вашими файлами? Кроме того, __DIR__ не является жизнеспособным решением самостоятельно, так как он не начинается в веб-каталоге сайтов, он идет дальше. Кроме того, я предполагаю, что вы отклонили мой вопрос из-за отсутствия форматирования. Я исправлю это в будущем. Если есть еще одна причина, дайте мне знать. –
Вы не можете иметь свой торт и съесть его тоже.:) Пути либо связаны с фиксированным корнем с установкой 'include_path', либо относительно друг друга с помощью' __DIR__'. В любом случае вам придется отредактировать кучу файлов, если вы когда-либо измените структуру своего каталога. - Чтобы избежать этого, вы должны использовать классы и автозагрузку; хотя это все равно означает, что вы отредактируете кучу имен пространства имен, если вы измените структуру каталогов. – deceze
Но разве обе не представляют собой ужасную среду для больших проектов? Если я сделаю его относительно include_path, мне придется (насколько я понимаю) установить include_path для скрипта EACH. Если позже я решит изменить его, мне нужно пройти через каждый файл и изменить его. Опять же, если я использую __DIR__, существует большая проблема в том, что он не запускается в каталоге веб-сайта, он идет еще дальше. Например, на localhost __DIR__ будет «Applications/MAMP/htdocs/mySite» вместо «mySite». –