Используя php __DIR__

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

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

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

$projectfiles = __DIR__("projectfiles/")

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

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

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

Ответ 1

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

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

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

Ответ 2

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

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

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

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

include(PROJECTFILES.'include_me.php

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