Я пытаюсь создать файл config.php, который определяет глобальную переменную, которая содержит путь к каталогу под названием «projectfiles». Идея состоит в том, что любой файл может указывать на этот каталог независимо от того, где он находится в дереве файлов.
Могу ли я использовать __DIR__
для этого? Кто-нибудь захочет дать мне пример того, как это может работать? Я думал о чем-то вроде следующего:
Я хочу определить каталог здесь: в файле /config.php
$projectfiles = __DIR__("projectfiles/")
Затем я хочу, чтобы файл библиотеки мог использовать эту переменную в файле /venders/library/generalfunctions.php
include("../../../config.php"); $file = $projectfiles/testfile.php
вinclude("../../../config.php"); $file = $projectfiles/testfile.php
Предложения?
__DIR__
– это, безусловно, то, что вы ищете. Используйте его для предоставления относительных путей для требуемых файлов. Я бы настоятельно предложил использовать require_once
или include_once
для всех файлов библиотеки.
if( !defined( __DIR__ ) ) define( __DIR__, dirname(__FILE__) ); require_once( __DIR__ . '/../../../config.php'); . . . // you code here
Использование первой строки гарантирует, что вы не столкнетесь с проблемами с PHP 5.2 и обратно. Это позволит вам включать файлы, основанные на структуре каталогов, а не по отношению к скрипту.
Похоже, что архитектура этого приложения менее оптимальна, но, не зная больше, я не могу комментировать это.
Я предлагаю определить его как константу, чтобы он не мог быть изменен и доступен независимо от области действия.
define('PROJECTFILES',__DIR__.'/projectfiles/');
Предполагая , что:
/config.php
/projectfiles/include_me.php
include(PROJECTFILES.'include_me.php
Имейте в виду, что __DIR__
будет ссылаться на каталог, в котором находится config.php
. Если config.php
является родительской папкой projectfiles
то вышеуказанное будет работать.