Переменная в пути к файлу php require_once - PullRequest
2 голосов
/ 09 марта 2012

Как вы берете следующую и подставляете часть пути к файлу в качестве переменной?

require_once $_SERVER['DOCUMENT_ROOT'] . '/directory1/directory2/directory3/file.php';

Я хочу подставить каталог2 с помощью переменной $ dir2.Простая вставка переменной следующим образом не работает?

require_once $_SERVER['DOCUMENT_ROOT'] . '/directory1/$dir2/directory3/file.php';

Спасибо.

Ответы [ 4 ]

4 голосов
/ 09 марта 2012

Основной синтаксис php: строки, заключенные в кавычки ', не интерполируют переменные. Вместо этого используйте " строку в кавычках:

require_once $_SERVER['DOCUMENT_ROOT'] . "/directory1/$dir2/directory3/file.php";
                                         ^---                                  ^---

или использовать конкатенацию строк:

require_once $_SERVER['DOCUMENT_ROOT'] . '/directory1/' . $dir2 . '/directory3/file.php';
2 голосов
/ 09 марта 2012

Использование " будет анализировать переменную.

"/directory1/$dir2/directory3/file.php"

И вместо зависимости $_SERVER['DOCUMENT_ROOT'] вы должны сделать что-то вроде diranme(__FILE__) или __DIR__ (> = 5.3), чтобы определить кореньреж.

2 голосов
/ 09 марта 2012

Есть два способа сделать это в PHP.

require_once $_SERVER['DOCUMENT_ROOT'] . '/directory1/'.$dir2.'/directory3/file.php';

Или

require_once $_SERVER['DOCUMENT_ROOT'] . "/directory1/$dir2/directory3/file.php";

Разница заключается в использовании 'или' для строк. При использовании 'Вам необходимо объединить переменные, как в примере и как вы уже сделали с $ _SERVER [' DOCUMENT_ROOT ']. При использовании ", вы можете поместить переменные в Строки "как есть" или даже сделать что-то вроде этого (полезно с массивами):

require_once $_SERVER['DOCUMENT_ROOT'] . "/directory1/{$_SERVER["HTTP_HOST"]}/directory3/file.php";
1 голос
/ 09 марта 2012

Одинарные кавычки предотвращают подстановку переменных. Используйте двойные кавычки:

require_once $_SERVER['DOCUMENT_ROOT'] . "/directory1/$dir2/directory3/file.php";
...