2013-08-03 2 views
12

Я пытаюсь создать файл config.php, который определяет глобальную переменную, которая содержит путь к каталогу под названием «projectfiles». Идея состоит в том, что любой файл может указывать на этот каталог независимо от того, где он находится в дереве файлов.using php __DIR__

Могу ли я использовать __DIR__ для этого? Кто-нибудь захочет дать мне пример того, как это может работать? Я имел в виду что-то вроде следующего:

Я хочу определить каталог здесь: в /config.php файле

$projectfiles = __DIR__("projectfiles/") 

Затем я хочу библиотечный файл, чтобы иметь возможность использовать эту переменную в /venders/library/generalfunctions.php файле

include("../../../config.php"); 
$file = $projectfiles/testfile.php 

Предложения?

ответ

0

Похоже, архитектуры этого приложения является менее оптимальным, но, не зная больше, я не могу прокомментировать ..

Я предлагаю определить его как константу, так что она не может быть изменен и доступен независимо от объема.

define('PROJECTFILES',__DIR__.'/projectfiles/');

Предполагая:
/config.php
/projectfiles/include_me.php

include(PROJECTFILES.'include_me.php

Имейте в виду, что __DIR__ будет ссылаться на каталог, который находится в config.php. Если config.php является родительской папкой projectfiles, тогда abov e будет работать.

3

__DIR__ - это, безусловно, то, что вы ищете. Используйте его для предоставления относительных путей для требуемых файлов. Я бы настоятельно предложил использовать require_once или include_once для всех файлов библиотеки.

if(!defined(__DIR__)) define(__DIR__, dirname(__FILE__)); 
require_once(__DIR__ . '/../../../config.php'); 
. 
. 
. 
// you code here 

Использование первой строки гарантирует, что вы не столкнетесь с проблемами с PHP 5.2 и обратно. Это позволит вам включать файлы, основанные на структуре каталогов, а не по отношению к скрипту.

Смежные вопросы