2016-08-25 3 views
1

Я пытаюсь понять, как именно php treats включает пути на вызовы страниц.Общие сведения о путях включения php

Допустим, у меня есть index.php в базовом каталоге, функции/functionFile1.php, функции/functionFile2.php и настройки/settingFile.php

Так просто один index.php имеет

include_once("functions/functionsFile1.php"); 
include_once('settings/settingsFile.php'); 

В файле режиме1:

include_once('settings/settingsFile.php'); 
include_once('functionsFile2.php); 

function DoX() 
{ 
    include("settings/settings.php"); 
    $variableInSettingsPage; 
} 

Как это, что это работает? Файл functions1.php, кажется, способен вызывать оба файла относительно себя (functions2.php) и его вызывающую страницу (settings/settings.php)? И функция, требующая вызова файла настроек, может использовать путь относительно вызывающей страницы, даже если она выходит за пределы области действия и откажется использовать путь относительно своей страницы?

+1

Если вы замените '' include_once' с require' вы, вероятно, увидите, что она не работает, когда вы думаете, что он делает. – jeroen

+0

Требуется ли вызов функции с использованием пути относительно файла, в котором он хранится? –

+0

'require' и' include' работают точно так же, но 'require' выдаст вам сообщение об ошибке, когда файл не будет найден. – jeroen

ответ

0

Php использует путь включения, каждый путь, из которого может быть включен файл, хранится там. Когда вы пытаетесь включить файл, php будет проходить через каждый путь и проверяет, находится ли ваш файл в одном из них, если он есть, он прекратит цикл и включит его, если это не так, он будет продолжать цикл до тех пор, пока это не закончится достигнуть конца и поднять ошибку.

Вы можете проверить, что в вашем include_path, используя get_include_path()

Смежные вопросы