Я пытаюсь создать файл 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 то вышеуказанное будет работать.