Деструктор – это специальный метод класса, предназначенный для освобождения ресурсов, занятых объектом во время его существования. Этот метод всегда вызывается после всех остальных методов во время уничтожения объекта. В нем можно закрыть открытые файлы, отсоединиться от базы данных.
Конструктор и деструктор – это ключевые методы класса. Их наличие является одним из признаков объектно-ориентированной технологии. Но это не значит, что в каждом классе обязательно должны быть констуктор и деструктор – это необязательные элементы класса и их следует применять только при необходимости.
Объекты объявляются с помощью ключевого слова new и являются экземпляром класса. Можно объявить несколько объектов (экземпляров) класса, точно так же как одному понятию стола может соответствовать несколько реальных столов, а из одной литейной формы можно получить много деталей.
Объекты являются такими же полноценными переменными. Можно создавать массив объектов, но при работе с ним необходимо учитывать особенности объявления и оперирования объектами.
Объекты, как и обычные переменные, можно передавать в качестве аргумента функции. Они могут выступать не только как параметры функций, но и как возвращаемые значения. Возвращаемый объект можно присвоить другому объекту или вызвать его методы или члены непосредственно.
Глава 2 – Реализация класса
Создаваемый нами класс будет называться Url_nav представлять собой массив и переменную:
$link_and_text_list – массив ссылок, в котором будут храниться адреса ссылок и текст к ним.
$delitmer – разделитель ссылок.
Для успешной работы класса нам понадобятся три метода:
функция, изменяющая стиль посещенных ссылок
функция, изменяющая стиль ссылок при наведении курсора мыши
функция, изменяющая стиль не посещенных ссылок
функция, которая будет добавлять обычную ссылку элемент в массив
функция, которая будет добавлять ссылку-рисунок в массив
функция, создающая горизонтальное меню навигации из массива
функция, создающая вертикальное меню навигации из массива
функция создающая заголовок
Опишем каждый метод класса более подробно.
2.1 Функция l_visited_style (изменение стиля посещенных ссылок)
При вызове функции пользователю надо будет ввести четыре параметра:
$color – цвет ссылок
$t_decor – оформление ссылок (например подчеркивание)
$f_size – размер шрифта ссылок
$f_font – название шрифта ссылок
Реализация функции на языке PHP будет иметь следующий вид:
function l_visited_style($color, $t_decor, $f_size, $f_font)
{
echo('<STYLE type="text/css"> A:visited');
echo("{");
if ($color!="")
{
echo("color: ");
echo($color);
echo(";");
}
else
{
echo('color: #5f0000;');
}
if ($t_decor!="")
{
echo('text-decoration: ');
echo($t_decor);
echo(';');
}
else
{
echo('text-decoration: none;');
}
if ($f_size!="")
{
echo('font-size: ');
echo($f_size);
echo('pt;');
}
else
{
echo('font-size: 12pt;');
}
if ($f_font!="")
{
echo('font-family: ');
echo($f_font);
echo(';}');
}
else
{
echo('font-family: Arial;');
}
echo("}</STYLE>");
}
2.2 Функция l_hover_style (изменение стиля ссылок при наведении)
При вызове функции пользователю надо будет ввести четыре параметра:
$color – цвет ссылок
$t_decor – оформление ссылок (например подчеркивание)
$f_size – размер шрифта ссылок
$f_font – название шрифта ссылок
Реализация функции на языке PHP будет иметь следующий вид:
function l_hover_style($color, $t_decor, $f_size, $f_font)
{
echo('<STYLE type="text/css"> A:hover');
echo("{");
if ($color!="")
{
echo("color: ");
echo($color);
echo(";");
}
else
{
echo('color: #000000;');
}
if ($t_decor!="")
{
echo('text-decoration: ');
echo($t_decor);
echo(';');
}
else
{
echo('text-decoration: blink, underline;');
}
if ($f_size!="")
{
echo('font-size: ');
echo($f_size);
echo('pt;');
}
else
{
echo('font-size: 12pt;');
}
if ($f_font!="")
{
echo('font-family: ');
echo($f_font);
echo(';}');
}
else
{
echo('font-family: Arial;');
}
echo("}</STYLE>");
}
2.3 Функция l_link_style (изменение стиля не посещенных ссылок)
При вызове функции пользователю надо будет ввести четыре параметра:
$color – цвет ссылок
$t_decor – оформление ссылок (например подчеркивание)
$f_size – размер шрифта ссылок
$f_font – название шрифта ссылок
Реализация функции на языке PHP будет иметь следующий вид:
function l_link_style($color, $t_decor, $f_size, $f_font)
{
echo('<STYLE type="text/css"> A:link');
echo("{");
if ($color!="")
{
echo("color: ");
echo($color);
echo(";");
}
else
{
echo('color: #5f0000;');
}
if ($t_decor!="")
{
echo('text-decoration: ');
echo($t_decor);
echo(';');
}
else
{
echo('text-decoration: none;');
}
if ($f_size!="")
{
echo('font-size: ');
echo($f_size);
echo('pt;');
}
else
{
echo('font-size: 12pt;');
}
if ($f_font!="")
{
echo('font-family: ');
echo($f_font);
echo(';}');
}
else
{
echo('font-family: Arial;');
}
echo("}</STYLE>");
}
2.4 Функция add_item (добавляет элемент в массив)
При вызове данной функции пользователю надо будет ввести два параметра:
$title – отображаемый текст ссылки
$s_url – адрес, на который указывает ссылка
Таким образом, всю функцию можно описать следующей последовательностью действий:
определение конца массива
добавление в массив переменной $title
добавление в массив переменной $s_url
После перевода алгоритма на язык PHP получим следующую функцию:
function add_item($title, $s_url)
{
$n=sizeof($this->link_and_text_list);
$this->link_and_text_list[$n]['title']=trim($title);
$this->link_and_text_list[$n]['url']=trim($s_url);
}
2.5 Функция add_img_item (добавляет ссылку-рисунок в массив)
При вызове данной функции пользователю надо будет ввести три параметра:
$title – альтернативный текст
$s_url – адрес, на который указывает ссылка
$image – путь к рисун
Таким образом, всю функцию можно описать следующей последовательностью действий:
определение конца массива
добавление в массив тега IMG с путем к рисунку заданным переменной $image и альтернативным текстом из переменной $title
добавление в массив переменной $s_url
После перевода алгоритма на язык PHP получим следующую функцию:
function add_img_item($title, $s_url, $image)
{
$n=sizeof($this->link_and_text_list);
if ($image!="")
{
$this->link_and_text_list[$n]['title']="<IMG SRC=".trim($image)." BORDER=0 ALT='".trim($title)."'>";
}
$this->link_and_text_list[$n]['url'].=" ".trim($s_url);
}
2.6 Функция gor_nav_create (создает горизонтальное меню навигации из массива)
Функция должна последовательно выводить все ссылки, введенные ранее в массив $link_and_text_list, через разделитель заданный в переменной $delitmer.
Реализация функции на языке PHP будет иметь следующий вид:
function gor_nav_create()
{
$links_arr=$this->link_and_text_list;
$str = "";
$c=sizeof($links_arr);
for ($i=0; $i<$c; $i++)
{
if (!$links_arr[$i]['url'])
{
$str .= $links_arr[$i]['title'];
} else {
$str .= "<a href=\"".$links_arr[$i]['url']."\" target=\"_self\">".$links_arr[$i]['title']."</a>";
}
if ($i<$c-1)
{
$str .= $this->delitmer;
}
}
return $str;
}
2.7 Функция vert_nav_create (создает вертикальное меню навигации из массива)
Функция должна последовательно выводить все ссылки, введенные ранее в массив $link_and_text_list с переходом на следующую строк
Реализация функции на языке PHP будет иметь следующий вид:
function vert_nav_create()
{
$links_arr=$this->link_and_text_list;
$str = "";
$c=sizeof($links_arr);
for ($i=0; $i<$c; $i++)
{
if (!$links_arr[$i]['url'])
{
$str .= $links_arr[$i]['title'];
} else {
$str .= "<a href=\"".$links_arr[$i]['url']."\" target=\"_self\">".$links_arr[$i]['title']."</a>"."<BR>";
}
}
return $str;
}
2.8 Функция title_create() (создает заголовок страницы)
Данная функция будет выводить в заголовок страницы часть массива, содержащую текст из ссылок (через разделитель).
Реализация функции на языке PHP будет иметь следующий вид:
function title_create()
{
$links_arr = array_reverse($this->link_and_text_list);
$str = "";
$c = sizeof($links_arr);
for ($i=0; $i<$c; $i++)
{
$str .= $links_arr[$i]['title'];
if ($i<$c-1)
{
$str .= $this->delitmer;
}
}
return "<title>".$str."</title>";
}
2.9 Пример использования
Для того чтобы проиллюстрировать использование созданного нами класса введем следующий код PHP (результат его выполнения показан на Рис. 1) :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>ReFolder - О проекте</TITLE>
</HEAD>
<BODY bgcolor="#FFFFFF" text="#000000">
<TABLE BORDER=0 WIDTH=100% HEIGHT=100%>
<TR>
<TD WIDTH=300 HEIGHT=90 ALIGN = "center" VALIGN = "middle"><IMG SRC = "Logo.jpg"></TD>
<TD ALIGN = "center" VALIGN="bottom">
<?php
$nav = new Url_nav(); // создание нового экземпляра класса
$nav -> l_visited_style("","","","");//изменение стиля посещенных ссылок
$nav -> l_hover_style("","","","");//изменение стиля ссылок при наведении
$nav -> l_link_style("","","","");// изменение стиля непосещенных ссылок
$nav -> delitmer = " < "; // установка разделителя
$nav -> add_item("О проекте", "index.htm");
$nav -> add_item("Рефераты", "referats.htm"); // добавление элементов
$nav -> add_item("Библиотека", "bibl.htm");
$nav -> add_item("Решения и ответы", "otveti.htm");
$nav -> add_item("Программы", "program.htm");