2013-10-06 2 views
1

В другом месте, я обсуждаю следующий вопрос:Как (не) senseful бы вы оценили этот PHP код:

Я думаю, что этот код:

if(file_exists("amodule.inc.php")) 
    require_once("amodule.inc.php"); 

является недостоверным из-за использования из require_once.

Я думаю, что - сохранить логику и «формулировку» в строке - «include_once» было бы уместно.

Насколько я понимаю, идет, единственное различие между «требуют» и «включать», что «требует есть следствие (привал), если файл не существует, по сравнению включает выручку только предупреждение.

Но, если файл не существует, то код require_once не будет выполнен. Therefor «требовать» вводит в заблуждение с моей точки зрения.

с поверхностной точки зрения, можно было бы утверждать, что приведенный выше код, используя require_once и

if(file_exists("amodule.inc.php")) 
    include_once("amodule.inc.php"); 

являются "iden что, с моей точки зрения, нет. Потому что:

«Грубый» анализ (например, автоматическая проверка проекта) бросил бы сообщение, что «amodule.inc.php» является жизненно важным файлом проекта, который показывает код.

Итак, как бы вы, ребята, спорили?

+1

Я думаю, что это было бы более уместно на http://codereview.stackexchange.com –

+2

Отказался закрыть вопрос, потому что это основано на мнениях. Вопросы, подобные этому, относятся к http://codereview.stackexchange.com/ –

+1

stackoverflow в основном для конкретных вопросов:/Это не платформа для обсуждения, пожалуйста, задавайте вопросы, которые являются «решаемыми» –

ответ

1

Проверьте, существует ли файл, а затем включает/требует, чтобы он был вздор. Прежде всего, он удваивает доступ к диску, делая операцию в два раза медленнее, чем она должна быть. Во-вторых, у вас могут быть проблемы с условиями гонки, в которых файл удаляется прямо между вызовом file_exists и include, создавая ошибки. Если включение разрешено сбой, просто используйте include без предварительного уведомления file_exists. Если включение не разрешено, используйте require. Именно поэтому эти две конструкции существуют. Используйте @ для необязательного уведомления.

Но почему файл должен быть разрешен в первую очередь?

+0

+1 для упоминания условий гонки .. Я думал, что * I * слишком педантичен :) – hek2mgl

+1

Это, возможно, крайне маловероятно, но эй, пока мы говорим о * правильности * , это большая его часть. :) – deceze

+0

да определенно .. и по мере того, как жизнь идет, маловероятно, но это произойдет. – hek2mgl

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