[Image] Понедельник, 18.11.2024, 11:52 [Image]
SEO, технологии, игры, IT новости
[Image] Главная Регистрация Вход [Image]
[Image] Приветствую Вас, Гость · RSS [Image]
Меню сайта

Форма входа
 Блог
Главная » 2010 » Декабрь » 18 » Многофайловые сценарии РНР
17:56
Многофайловые сценарии РНР

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

НА ЗАМЕТКУ
Единственная разница между include/require и include_once/require_once связана с тем, сколько разданный файл загружается. Когда используются операторы include_once/require once, файл не может быть загружен или выполнен множество раз.
НА ЗАМЕТКУ
Если попытаться повторно загрузить файла одним из этих методов, такая попытка будет проигнорирована. Поскольку недопустимо определять одну и ту же функцию множество раз в сценарии, эти директивы позволяют разработчику включать сценарий по необходимости, не проверяя, был ли он ранее загружен.

Общий синтаксис операторов include и require выглядит так:

include "file_to_load.php";
include_once "file_to_load.php";
или
require "file_to_load.php";
require_once "file_to_load.php";

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

НА ЗАМЕТКУ
Если упаковщики URL разрешены в РНР (см. главы 20 и 21), то в качестве имени файла в директивах включения можно использовать адрес HTTP.

Как уже было сказано, разделять функции и код, который их использует во многих сценариях — это хорошая практика. Следуя этому принципу, предполагается, что существует PHP-файл с именем library.inc, который содержит функцию i s leapyear(), определенную в листинге 1.19. Следует отметить, что файлы, не содержащие РНР-код (такие как файлы HTML), также могут быть включены. При этом они будут отправлены на выход, как вы и ожидаете.
Предполагая, что library. inc находится в том же каталоге, что и текущий сценарий, вы можете использовать функцию is_leapyear (), которая находится в файле library, inc, как показано в листинге 1.24.

Листинг 1.24. Использование include для загрузки файлов в РНР
include ('library.inc1); // Скобки не обязательны
$1еар = is_leapyear(2003);
НА ЗАМЕТКУ
В большинстве реальных ситуаций файлы, которые включаются в PHP-сценарии, находятся не в том же каталоге, что и сценарий, который их использует. Часто все включаемые файлы располагаются в каталоге, являющемся частью пути поиска файлов РНР. Когда файл запрашивается для включения в PHP-сценарий, то РНР сначала проверяет текущий каталог, а затем каталоги из пути поиска включаемых файлов.
Аналогично, оператор require также может использоваться для включения файла, как показано в листинге 1.25.
Листинг 1.25. Использование require для загрузки файлов в РНР
require ('library.inc'); // Скобки не обязательны
$1еар = is_leapyear(2003);
?>

Если оба оператора позволяют текущему сценарию выполнять код из отдельного файла, в чем же разница между ними? Существуют два основных отличия: первое —это способность возвращать значения и второе — при каких условиях загружается запрошенный файл. Когда применяется директива include, PHP откладывает момент загрузки запрошенного файла до того момента, когда сценарий достигнет точки выполнения оператора include и заменит его содержимым этого файла. В противоположность этому в случае применения оператора require, он заменяется содержимым включаемого файла независимо от того, будет ли выполнен оператор required (и, соответственно, содержимое файла) в процессе нормального выполнения сценария.
Все это прекрасно, но что именно означает "возврат значения" из внешнего файла?
Рассмотрим код, приведенный в листинге 1.26, который, как предполагается, сохранен в файле t e s t , inc, и связанный с ним сценарий includetest.php.

Листинг 1.26. Поведение файлов, включенных с помощью include
/* test.inc file */
echo "Внутри включаемого a£tna
";
return "Возвращенная строка";
echo "После возврата внутри включения<ВК>";
?>
<?php
/* файл includetest.php */
echo "Внутри includetest.php<BR>";
$ret = include ('test.inc1);
echo "Выполнено включение test.inc<BR>";
echo "Возвращенное значение равно '$ret '"

Когда includetest.php выполнится, каков будет результат? В данном случае он будет таким:

Внутри includetest.php
Внутри included file
Выполнено включение test.inc
Возвращенное значение равно 'Возвращенная строка1

Как вы можете убедиться, внешние файлы не только применимы для сохранения библиотек функций общего пользования РНР. Когда используется оператор include, они могут быть функциями РНР в полном смысле этого слова. Обратите внимание, что когда в файле includetest.php встречается оператор return, выполнение оставшейся части файла прерывается.

НА ЗАМЕТКУ
Способность возвращать значения из внешних файлов ограничена только операторами include и include_once. Операторы require и require_once не позволяют это делать.

Категория: Все о PHP | Просмотров: 2685 | Добавил: witkom8382 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024
Категории
Оптимизация сайта [591]
Создание сайтов [355]
Заработать в интернете [508]
Технологии [46]
Полезное [391]
Услуги и сервисы [317]
Автоблог [105]
Скрипты для Ucoz [39]
Движок на сайт [10]
Все о Joomla и Drupal [20]
Все о PHP [91]
Поиск
Пользовательский поиск
Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0
Seo сайт, технологии продвижения, мета теги, оптимизация сайтов, новости сео, Скрипты, Ucoz

Рейтинг@Mail.ru