У меня есть сценарий, когда я хочу вернуть путь к определенному родительскому каталогу. Вот пример папки strcuture ( [something]
– это папка)
index.php [components] header.php footer.php [pages] somePage.php [somePageSubPages] someSubPage.php
Поэтому мои страницы содержания выглядят примерно так:
<?php include('components/header.php'); ?> <!-- CONTENT STUFF --> <?php include('components/footer.php'); ?>
в<?php include('components/header.php'); ?> <!-- CONTENT STUFF --> <?php include('components/footer.php'); ?>
в<?php include('components/header.php'); ?> <!-- CONTENT STUFF --> <?php include('components/footer.php'); ?>
Это работает для index.php
но не для somePage.php
и someSubPage.php
. То, что я хочу сделать, это создать функцию, возвращающую путь обратно в главную директорию, поэтому я могу добавить это к включенным и другим материалам:
$relPath = getPathToRoot($rootDirName); include($relPath . 'components/header.php');
И функция возвращает только пустую строку или ../../
.
Я думал об использовании __FILE__
а затем просто подсчитывал /
-символы между данным $ rootDirName и концом строки. Тем не менее, я хотел бы спросить, является ли это надежным способом и как это будет выглядеть в PHP. (Я не очень много работаю с PHP …)
Я бы удостоверился, что вы всегда знаете корень вашего сайта, чтобы вы могли взять его оттуда.
Для этого вы можете пойти как минимум двумя способами:
include MY_SITE_ROOT . '/path/to/file.php';
include $_SERVER['DOCUMENT_ROOT'] . '/path/to/file.php';
Вы можете использовать ..
чтобы попасть в родительский каталог:
<?php // somePage.php include('../components/header.php'); ?>