Можно ли размещать на сайте много PHP-включений? - PullRequest
6 голосов
/ 07 ноября 2010

Пока у меня есть около 3 PHP-включений на моем сайте.

<?php include("includes/header.html"); ?>

Есть ли причина, почему я не должен добавлять тонну этих?

Ответы [ 4 ]

8 голосов
/ 07 ноября 2010

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

Кстати, если вы используете эту технику для включения других PHP-файлов (например, библиотечных файлов с используемыми функциями),хорошая идея использовать require_once (есть также include_once, а также обычный require);require вызовет ошибку, если его аргумент не найден, и не будет продолжать пытаться отобразить страницу.require_onceinclude_once) не будут включать один и тот же файл более одного раза, даже если вы звоните require_once (или include_once) из разных мест.

6 голосов
/ 07 ноября 2010

Я подозреваю, что вы делаете что-то вроде этого:

<?php
  include("session_and_headers.php");
  include("top_nav.html")
  include("right_sidebar.html");
?>

 ... actual content generation code ...

<?php
  include("footer.html");
  include("js_loader.php");
?>

В этом нет ничего плохого для простых статических сайтов или ситуаций, когда у пользователей будет только несколько разных представлений.

Но что произойдет, если вы захотите использовать немного другую боковую панель только для определенных типов страниц? Где вы располагаете логикой, чтобы определить, что так очевидно для следующего человека, который наследует ваш код?

Если вы столкнетесь с такими сложностями, я рекомендую использовать подход MVC (даже если вы в основном используете его аспекты view / controller).

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

Не смотрите на это столько, сколько это плохо для PHP , смотрите на это больше, как сложно поддерживать ?

1 голос
/ 07 ноября 2010

Есть одно преимущество при написании объектно-ориентированного кода и обновлении до PHP 5: вы можете избежать «тонны включений», используя автозагрузку класса .

0 голосов
/ 07 ноября 2010

Единственным недостатком является производительность - каждый включает в себя затраты на системные вызовы.С 3 или 10 это все небольшие изменения, если ваш трафик не огромен, но около 100 может быть проблемой.Решение состоит в том, чтобы использовать кэш байт-кода (например, apc) и установить для вашей переменной realpath_cache_size более высокое значение (по умолчанию достаточно для примерно 100-200 файлов в зависимости от длины пути).Кроме этого - не большая проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...