в PHP какая разница, если я использую ./ (точка косая черта) при вызове файла по сравнению с неиспользованием его - PullRequest
1 голос
/ 20 мая 2011

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

Пример: include "./includes/functions.php";

против: включить «include / functions.php»;

Ответы [ 5 ]

4 голосов
/ 20 мая 2011

Напиши, что ты имеешь в виду.

./foo означает foo в текущем каталоге .
foo означает foo в текущем или любом каталоге в путь включения .

Это важное различие в , означающее , производительность не имеет значения и незначительна. Если foo существует в текущем каталоге, разницы не будет.

2 голосов
/ 20 мая 2011

php документы в include:

Если указан путь - абсолютный (начиная с буквы диска или \ в Windows или / в Unix / Linuxсистем) или относительно текущего каталога (начиная с. или ..) - include_path будет полностью игнорироваться.Например, если имя файла начинается с ../, анализатор будет искать в родительском каталоге, чтобы найти запрошенный файл.

в описании основных директив php.ini упоминается, что

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

но опять же, вы не так часто звоните include.снижение производительности незначительно и не критично для вашего приложения.как сказал Кнут, «преждевременная оптимизация - корень всего зла» *

0 голосов
/ 20 мая 2011

Я не думаю, что есть большая разница.Оба производят один и тот же код операции, и разрешение пути выполняется в хорошо оптимизированной функции C в ядре PHP или в (очень) хорошо оптимизированном системном вызове C.Даже если есть разница, это не повлияет на вашу общую производительность, поскольку вы редко require сотни тысяч файлов ...

РЕДАКТИРОВАТЬ: я только что провел какой-то тест (включая 10 000 файлов)абсолютно никакой разницы, за исключением того, что:

  • ./libdir/file.php будет искать файл в текущей папке
  • libdir/file.php будет искать файл в текущей папке и в $ПУТЬ
0 голосов
/ 20 мая 2011

Оба означают одно и то же.Если в синтаксическом анализе файловой системы ввода-вывода PHP есть различия, то она должна быть полностью минимальной и отображаться только в больших тестах.Вы можете попробовать это, но я сомневаюсь, что разница будет существенной.

0 голосов
/ 20 мая 2011

Будет небольшая разница в скорости из-за длины используемой вами струны.С точки зрения стиля, использование «./» подразумевает, что вы намеренно подразумеваете относительное имя файла и не просто случайно пропустили начальный слеш.

...