Почему нужно использовать dirname(__FILE__) в php

225
26 июня 2017, 20:30

Во многих проектах видел подключение стороннего файла в таком виде:

<?php
  include( dirname(__FILE__) . '/file.php' );
?>

По идее, этот код выполняет те же действия:

<?php
  include( 'file.php' );
?> 

Так в чем же разница и почему программисты используют именно первый вариант?

Answer 1

http://php.net/manual/ru/function.include.php

Файлы включаются, исходя из пути указанного файла, или, если путь не указан, используется путь, указанный в директиве include_path. Если файл не найден в include_path, include попытается проверить директорию, в которой находится текущий включающий скрипт и текущую рабочую директорию перед тем, как выдать ошибку.

Поэтому вижу две причины указывать абсолютный путь:

  1. Избежать неожиданностей, вызванных вмешательством директивы include_path.
  2. Ускорить работу: сразу пойти по абсолютному пути, а не перебирать директории, которые могут подразумеваться.

С версии 5.3 вместо dirname(__FILE__) можно использовать __DIR__. В этом ответе пишут, что это может работать ещё быстрее, потому что __DIR__ определяется на стадии компиляции, а dirname(__FILE__) означает вызов функции и поэтому происходит во время исполнения.

READ ALSO
Часть кода Qt/C++ вынести в DLL

Часть кода Qt/C++ вынести в DLL

Проект Qt/С++ для Windows/LinuxПочти всё, реализовано на классах

245
Приём по CAN идущих подряд сообщений

Приём по CAN идущих подряд сообщений

Добрый день, столкнулся со следующей проблемой: при приёме по CAN нескольких идущих подряд сообщений, часть из них теряетсяИдея системы: есть...

295
Точки, многопоточность

Точки, многопоточность

Суть заданния, нужно найти точку которая ближе к началу (0,0) находится , делать используя многопоточностьЯ создаю функции для решения задания:

213
Не вызывается деструктор у класса

Не вызывается деструктор у класса

Доброго времени сутокИмеется класс, который изменяет кодировку консоли

224