2015-11-03 8 views
0

У меня есть файл navbar.php, который находится в папке views/general. Он включает в себя несколько файлов относительного пути ../controllers/file1.php и т. Д.Относительные пути и вложенные включает

Я могу включить файл navbar.php только в других файлах в одной и той же папке. Если я попытаюсь включить его в файл за пределами этого, например views/signup,

пути включения, содержащиеся в файле navbar.php (../controllers/file1.php и т. Д.), Больше не будут иметь значения.

Как я могу решить это, поэтому navbar.php можно использовать из любого места?

ответ

3

У меня был подобный вызов и создали единый файл, который определяет константы для всех соответствующих путей, которые я хочу, чтобы иметь возможность вызывать по мере необходимости. Я включаю этот файл на все мои страницы (я определяю $ urlRoot, чтобы он работал во всех средах и мог перемещаться в разных доменах и т. Д.):

Файл: pathData.php (добавлен MENUDIR для вашего примера):

$baseDir = dirname(__DIR__) . '/'; 
$rootUrl = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . '/'; 
define('ROOTURL', $rootUrl); 
define('BASEDIR', $baseDir); 
define('INCLUDES', $baseDir . 'includes/'); 
define('INCLUDESURL', ROOTURL . 'includes/'); 
define('JQUERYURL', ROOTURL . 'includes/jquery/'); 
define('MENUDIR', ROOTURL . 'views/general/'); 

Затем в каждый файл я включаю этот файл с include, включающий относительный путь к каталогу. Например:

include("pathData.php"); 
or 
include("../pathData.php"); 
or 
include("../../pathData.php); 
etc. 

Так что в вашем случае вы можете (в зависимости от того, где ваш файл pathData есть):

include("../pathData.php"); 
include(MENUDIR . "navbar.php"); 
etc... 
+1

Он работает на окнах, а также Linux. :-) –

+0

@ RyanVincent - мне просто повезло - мне больно незнакомо с Windows. Ха! – Xmy

+2

Это очень типичный подход, используемый во многих сложных приложениях, и это было бы неплохо для начала. –

0

Если вы используете PHP 5.3+:

include __DIR__ . '/relative/path/from/this/file.php'; 

__DIR__ это магическая константа держит абсолютный путь текущего файла.

Если вы используете более ранние версии PHP:

include dirname(__FILE__) . '/relative/path/from/this/file.php'; 
0

Вы также можете обобщить все из корневого каталога вашего хостинга веб-сайта с помощью переменной $_SERVER['DOCUMENT_ROOT'] которая будет каталог, где ваш index.php должен быть расположенным.

Использование следующим образом:

include($_SERVER['DOCUMENT_ROOT'] . 'path/from/root/website/location/to/file.php');