Смекни!
smekni.com

Разработка класса в PHP (стр. 2 из 3)

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

Конструктор и деструктор – это ключевые методы класса. Их наличие является одним из признаков объектно-ориентированной технологии. Но это не значит, что в каждом классе обязательно должны быть констуктор и деструктор – это необязательные элементы класса и их следует применять только при необходимости.

1.4 Объекты

Объекты объявляются с помощью ключевого слова 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=&bsol;"".$links_arr[$i]['url']."&bsol;" target=&bsol;"_self&bsol;">".$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=&bsol;"".$links_arr[$i]['url']."&bsol;" target=&bsol;"_self&bsol;">".$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");