Чтение онлайн

ЖАНРЫ

Курс "Язык программирования PHP"

Савельева Нина Владимировна

Шрифт:

$str .= "<a

href='mailto:help@intuit.ru'>Страницу

создал $user</a>";

echo "$str";

}

Footer;

// вызываем функцию Footer. Получим:

//Сегодня: 08.07.05

//Страницу создал Вася

echo "$user, $today";

// выведет запятую, так как

// эти переменные видны только

// внутри функции

?>

Кроме

локальных файлов, с помощью include можно включать и внешние файлы, указывая их url-адреса. Данная возможность контролируется директивой url_fopen_wrappers в файле настроек PHP и по умолчанию, как правило, включена. Но в версиях PHP для Windows до PHP 4.3.0 эта возможность не поддерживается совсем, вне зависимости от url_fopen_wrappers.

include – это специальная языковая конструкция, поэтому при использовании внутри условных блоков ее нужно заключать в фигурные скобки.

<?php

/* Это неверная запись. Получим ошибку.

Мы же вставляем не одну команду,

а несколько, они только записаны

в другом файле */

if ($condition) include("first.php");

else include("second.php");

// А вот так правильно.

if ($condition){ include("first.php"); }

else { include("second.php"); }

?>

При использовании include возможны два вида ошибок – ошибка вставки (например, нельзя найти указанный файл, неверно написана сама команда вставки и т.п.) или ошибка исполнения (если ошибка содержится во вставляемом файле). В любом случае при ошибке в команде include исполнение скрипта не завершается.

require

Этот оператор действует примерно так же, как и #include в C++. Все, что мы говорили о include, лишь за некоторыми исключениями, справедливо и для require. Require также позволяет включать в программу и исполнять какой-либо файл. Основное отличие require и include заключается в том, как они реагируют на возникновение ошибки. Как уже говорилось, include выдает предупреждение, и работа скрипта продолжается. Ошибка в require вызывает фатальную ошибку работы скрипта и прекращает его выполнение.

Условные операторы на require не влияют. Хотя, если строка, в которой появляется этот оператор, не исполняется, то ни одна строка кода из вставляемого файла тоже не исполняется. Циклы также не влияют на require. Хотя код, содержащийся во вставляемом файле, является объектом цикла, но вставка сама по себе происходит только однажды.

В реализациях PHP до версии 4.0.2 использование require означало, что интерпретатор обязательно попытается прочесть вставляемый файл.

require, как и include, при использовании внутри условных блоков нужно заключать в фигурные скобки.

Решение задачи

И наконец, вернемся к задаче, сформулированной в начале лекции. Мы хотим создать программу, которую можно было бы использовать для отправки писем (или просто для их генерации) с приглашениями на различные мероприятия множеству пользователей. В предыдущей лекции уже рассматривался подобный случай. Сейчас мы вынесем всю информацию о людях и событиях в отдельный файл data.php и напишем программу, не зависящую (ну, может, совсем чуть-чуть зависящую)

от этой информации и ее структуры. В этом случае для того, чтобы, например, расширить список адресатов, не нужно будет изменять скрипт, генерирующий приглашения. Кроме того, можно будет использовать информацию о людях и событиях в других скриптах. В самом скрипте, генерирующем приглашения letters.php, мы использовали условные операторы, циклы, require и другие изученные ранее конструкции.

<?php

define("SIGN","С уважением, Вася");

// пусть наша подпись

// будет константой

// информация о событиях

$events = array(

"f" => "день открытых дверей",

"o" => "открытие выставки",

"p" => "бал выпускников");

// имеющаяся информация о людях

// (имя и электронный адрес)

$people = array(

"ivan" => array(

"name" => "Иван Иванович",

"email"=>"user_ivan@intuit.ru"),

"pit" => array(

"name" => "Петр Петрович",

"email" => "user_petr@intuit.ru"),

"semen" => array(

"name" => "Семен Семенович"));

// кто куда приглашается

$who_where["ivan"] = "o" ;

// Иван – на выставку

$who_where["pit"] = "p";

// Петр – на бал

?>

<?php

require("data.php");

// включаем файл с данными о событиях

foreach($people as $key => $man_info){

// для каждого человека делаем следующее:

$event_key = $who_where[$key];

// получаем событие,

// на которое он приглашается

if ($event_key<>""){

foreach($man_info as $key1 => $info){

// получаем имя и email

// конкретного человека

if ($key1=="name")

$str = "Уважаемый (ая), $info";

if ($key1=="email") $email = $info;

}

// составляем приглашение

$str .= "<br>Приглашаем Вас на ".

$events[$event_key];

switch ($event_key){

// в зависимости от события

// добавляем какую-нибудь строчку

case "f":

$str .= "<br>Подтвердите Ваше

участие по телефону!";

break;

case "o":

$str .= "<br>Приходите за 15

минут до открытия!";

break;

Поделиться с друзьями: