2014-01-26 3 views
0

Я уверен, что я просто немного глуп, но документы include_path кажутся немного запутанными; что такоеPHP include_path параметр

Using a . in the include path allows for relative includes as it means the 
current directory. However, it is more efficient to explicitly use include 
'./file' than having PHP always check the current directory for every include. 

действительно пытается сказать?

ответ

2

что

Используя. в пути include допускает относительное включение, поскольку это означает текущий каталог . Тем не менее, более эффективно явно использовать include './file', чем PHP, который всегда проверяет текущий каталог для каждого include.

на самом деле попробовал сказать?

Предположим, вы хотите использовать include_path искать в папке /somepath/foo/includes включаемых файлов, если вы не укажите путь в явном виде. У вас может быть большая часть ваших включенных файлов, поэтому это должно быть не слишком неэффективным.

Теперь вы в том числе baz.php, xzy.php и 123.php из этого каталога - и если вы дали . первых в include_path, то PHP будет искать в текущем каталоге первых всегда, хотя в большинстве случаев файл будет находиться в /somepath/foo/includes папка.

Если вы не указать . в начале вашего пути включает в себя и использовать ./abc.php явно, когда вы включаете файл из текущего каталога (частный случай, а не один из ваших «нормальных» включает в себя), то для все другие из включаемых файлов, которые вы просто включаете использование baz.php, xzy.php и 123.php, PHP будет не должны сначала найти текущий каталог - что это бесполезно, так как эти файлы находятся в вашей специальных включают папку; так что PHP может пойти посмотреть там, в первую очередь.

+0

Я почти разместил это слово в слово - хотя я хотел бы отметить, что это все еще микро -оптимизация и что-то, что я ожидаю, будет обрабатываться автоматически, если вы будете использовать какой-то кеш-код операции, но я не могу найти информацию об этой части. Я не думаю, что ты знаешь иначе? – Emissary

+0

Спасибо - я думаю, это гораздо лучшее объяснение, чем официальные документы. Я думаю, что я подсознательно либо имел бы все мои «включенные» файлы в одну и ту же папку _or_, просто включив «специальные» в любом случае - так что хорошо знать, что это то, что рекомендуется! – ChrisW

+1

@ Эмиссар: Не знаю. И я согласен, это скорее микро-оптимизация. Указание большого количества включенных путей следует избегать, хотя я думаю, потому что просмотр нескольких каталогов до тех пор, пока не будет найден «окончательно» включенный файл, для меня не очень хорошо; и я думаю, что каждый раз указывать полный путь (вы должны знать, где находятся ваши включенные файлы, правильно?) - лучший способ - либо использовать абсолютный путь от корня сервера (возможно, заданный с помощью настраиваемого константного базового пути), или указать именно _one_ 'include_path' каталог в качестве базы от того, где искать. – CBroe

0

Речь идет о точке в начале в include_path.

Форма PHP Документация: If filename begins with ./ or ../, it is looked only in the current working directory.

./ is the current directory. It is largely the same as just someFile.php.In many cases \it doesn't check any standard places PHP might look for a file, instead checking only the current directory.

Edited. «более эффективным» означает, что лучше установить путь таким образом, с точки. В противном случае он попытается найти не только в текущем рабочем каталоге. Таким образом, это может быть проблемой, если вы хотите включить файл в какой-либо каталог, но файл не существует, он попытается найти в другом пути, и это может занять некоторое время и включить неверный вариант или просто ошибку.

+0

Я знаю '. /' Является текущим каталогом - я просто не понимаю, что документация пытается сказать, более эффективно – ChrisW

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