почему вместо php включить в php cms? - PullRequest
0 голосов
/ 06 августа 2010

Я вижу php CMS, использующий include вместо require для важных файлов. Разве эти файлы, такие как header.php, не требуются? Сценарий продолжается, если файл не может быть открыт!

Ответы [ 4 ]

3 голосов
/ 06 августа 2010

Зависит.Может быть признаком лени или необразованного разработчика.Но если заголовок является важным файлом - т.е. содержит логику авторизации (чего не должно быть), - тогда да, вы захотите использовать require вместо include.

2 голосов
/ 06 августа 2010

include допускает появление предупреждения, поэтому остальная часть сценария будет по-прежнему выполняться.require вызывает фатальную ошибку, которая немедленно останавливает выполнение.Обычно это приводит к созданию полностью пустой страницы с выводимым описанием ошибки.На мой взгляд, require_once наиболее удобен, особенно если у вас есть скрипт внутри скрипта внутри скрипта, потому что при многократном определении функций выдается фатальная ошибка.Я лично предпочитаю require_once (), потому что он предотвращает распространение php-кода в HTML, чтобы пользователь мог видеть

Вот несколько примеров

Condition: file test.php does not exist

Использование include ():

<?php
  include("test.php");
  print "<p>Hey This String Still Prints Dude!</p>";
?>

Результат:


Warning: include(test.php) [function.include]: failed to open 
stream: No such file or directory in 
/home/webspotm/public_html/error/index.php on line 2

Warning: include() [function.include]: Failed opening 'test.php' 
for inclusion (include_path='.:/home/webspotm/.imports') 
in /home/webspotm/public_html/error/index.php on line 2

Hey This String Still Prints Dude!


Использование require ():

<?php
  require("test.php");
  print "<p>Yea don't even try, this code ain't gonna show!</p>";
?>

Результат:

Warning: require(test.php) [function.require]: 
failed to open stream: No such file or directory in 
/home/webspotm/public_html/error/index.php on line 2

Fatal error: require() [function.require]: Failed opening 
required 'test.php' (include_path='.:/home/webspotm/.imports') in 
/home/webspotm/public_html/error/index.php on line 2
1 голос
/ 06 августа 2010

Либо автор не знает разницы между include и require, либо он не возражает, если файл не будет включен.

0 голосов
/ 06 августа 2010

Конструкция include () выдаст предупреждение, если не сможет найти файл;это поведение отличается от require (), что приведет к фатальной ошибке.

...