This article has been localized into Russian by the community.
Подключение файлов
Одна из самых популярных возможностей PHP - подключение файлов. Это позволяет разделить ваш код на несколько файлов и переиспользовать их в нескольких местах. К примеру, вы можете создать файл с функциями, которые вы очень часто используете, и подключать его, когда нужно, или можно хранить статическую разметку в одном месте, чтобы было проще обновлять ваш сайт. Сейчас это может показаться немного расплывчатым, так что давайте начнем с простого примера:
<i>Below this, content will come from another file!</i>
<br /><br /><br />
<?php
$number1 = 20;
include("includedfile.php");
?>
<br /><br /><br />
<i>We're back, after the included file has ended!</i>
Сохраните этот код в одном файле. Создайте новый файл, сохраните его под именем includedfile.php в той же директории и скопируйте в него следующий код:
<b>This text is included!</b><br />
<?php
$number2 = 30;
echo "And so is this PHP code - ".$number1." + ".$number2." equals " . ($number1 + $number2) . "!";
?>
Если вы откроете первый файл в браузере, то увидите, что содержимое подключенного файла отображается именно там, где вы разместили директиву include. Как вы можете видеть из примера, переменные, объявленные в первом файле, могут использоваться в подключенном файле, и наоборот. Это возможно благодаря тому, что подключение работает очень просто - PHP просто вставляет содержимое подключенного файла в исполняемый код и воспринимает его, как если бы он изначально был частью того же файла.
Разные "соусы"
Функциональность подключения может быть подана под 4-мя разными "соусами": include(), include_once(), require() и require_once(). Варианты с _once (единожды) гарантируют, что файл не будет подключен больше одного раза. Это бывает полезно, когда вам приходится подключать файлы в нескольких разных местах. Версию recuire (требуется) лучше использовать, когда подключаемый вами файл является критически важным, чтобы выполнить дальнейший код. Если файл оказывается не найден, что случается по ряду причин, include() просто выведет предупреждение, в то время как require() выбросит критическую ошибку и выполнение кода остановится. Как и все прочее, все четыре "соуса" бывают полезны в разных ситуациях.
Подключение файлов на основе строки запроса
В завершение данного параграфа я покажу вам пример из реального мира, в котором подключенные файлы используются, чтобы разделить разметку страницы на статическую и динамическую части. Это позволит вам выделить верх и низ сайта, являющиеся статическими, а центральную часть реализовать как динамическую. Это можно сделать разными способами, но этот, пожалуй, наиболее популярен. Сначала пример, а потом пояснения к нему:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>My website</title>
<meta name="generator" content="TSW phpCoder 2008" />
</head>
<body>
This part of the website is static. Dynamic content below!
<br /><br /><br />
<?php
if(isset($_GET["show"]))
{
switch($_GET["show"])
{
case "about":
include("subpage_about.php");
break;
case "contact":
include("subpage_contact.php");
break;
default:
include("subpage_index.php");
break;
}
}
else
include("subpage_index.php");?>
</body>
</html>
Думайте об этом, как о стартовом (index) файле вашего веб-сайта. У нас есть немного статического HTML, которые используется независимо от условий, а дальше идет немного магии со switch. Он включает подстраницу, основываясь на параметре show. Это значит, что страницу можно открыть, например, так:
index.php?show=about
и в нее будет включен subpage_about.php. Если никакое из допустимых вариантов значений show не задано, то будет включен subpage_index.php. Файлы subpage (подстраница), разумеется, должны содержать только актуальный контент, без всего базового HTML, вроде объявления doctype, метатегов и т.п. Это избавляет вас от необходимости протаскивать его через все ваши файлы, и позволяет изменять все ваши страницы через один-единственный файл.
Другой способ сделать это - включить файлы верха и низа на каждой странице, как показано здесь:
<?php
include("top.php");
?>
The actual content of the page goes here!
<?php
include("bottom.php");
?>
Какой вариант выбрать - зависит в основном от ваших личных предпочтений и особенностей проекта, над которым вы работаете, но вы убедитесь, насколько мощна функциональность подключения файлов - она сбережет вам тонны времени, и если вы все еще в этом не уверены - перечитайте данный параграф еще раз.