Включение PHP-файла в нужный файл

0

Вот пример структуры каталогов:

-Root
    index.php
    -forms
        -form.php
    -include
        -include.php

В моем index.php мне требуется form.php

require_once('forms/form.php');

в моем form.php Мне нужен файл include.php. Какое из следующего верно:

require_once('../include/include.php');
require_once('include/include.php');

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

  • 0
    Вы можете очень примитивно думать, что require примерно такой же, как eval(file_get_contents(...)) - он сохраняет текущий контекст, который включает в себя текущий рабочий каталог.
  • 0
    Только не включайте такие файлы ... как только ваша кодовая база достигнет определенной степени сложности, будет почти невозможно узнать, какой путь использовать, когда и где. Используйте set_include_path и определите константу, такую как PROJECT_ROOT , и используйте пути относительно этой константы.
Теги:

2 ответа

2
Лучший ответ

Правильно

require_once('include/include.php');

но он должен использовать абсолютный путь:

require_once(__DIR__.'/include/include.php');

__DIR__ работает с PHP 5.3.0. В более ранних версиях его эквивалент был dirname(__FILE__)

  • 0
    ../include/include.php Не правильно! Потому что это идет из файла индекса! так что другой будет правильным! Просто протестируйте и вы тоже это увидите
  • 0
    ой, извините, не заметил этого, спасибо, я пытался быть быстрее вас :)
Показать ещё 1 комментарий
7

Вы можете использовать магическую константу __DIR__, поэтому вам не нужно об этом думать, например

require_once(__DIR__ . '../include/include.php');
  • 0
    Не должно ли это быть require_once(__DIR__ . '../include/include.php'); поскольку form.php находится внутри каталога форм, который является «родственным» для каталога include?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню