Сегодня я заметил разницу.
Допустим, вы включили файл в index.php
.
<?php
include "./inc/head.php";
// right now, with the current code, this would work as well:
// include "inc/head.php";
tldr aclaration : использовать "./
" немного быстрее, потому что он не будет сначала искать в других папках ..
Но теперь допустим, я хочу включить файл inc/functions.php
.
Поскольку я буду включать эти функции в каждом месте, где у меня есть «голова», я бы напрямую включил этот файл в inc/head.php
.
<?php
// Wouldn't it be logical here to do this?
include "./functions.php";
Проблема в том, что файл, с которого был запущен скрипт, на самом деле index.php
, а НЕ inc/head.php
, этот скрипт не удастся , потому что попытается найти файл, который не существует: файл с именем functions.php
в том же каталоге , что и index.php
.
[+] inc/
\_ [.] functions.php <- We want to include this...
_ [.] head.php <- ...from this file
[.] index.php
x functions.php <-- Not this! (doesn't exist)
Итак, вместо использования синтаксиса "./" у нас есть два варианта:
- Включите файл, используя этот код:
include "./inc/functions.php";
- Включите файл, используя этот код:
include "functions.php"
Так что в данном конкретном случае наличие или отсутствие "./
" на самом деле * важно , поскольку оно значительно меняет поведение сценария.
Надеюсь, это прояснилось.
TLDR; Использование «./» всегда будет относиться к файлу, в котором инициализируется выполнение, а использование ничего («») будет относиться к include_path, а после этого - к каталогу текущего файла