используя php __DIR__

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