Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
сети эвм / Язык PHP.doc
Скачиваний:
84
Добавлен:
17.03.2015
Размер:
2.29 Mб
Скачать

Объектная модель php5

Кроме нового названия для конструкторови появления деструкторов в PHP5 произошло еще достаточно много изменений. Мы не будем обсуждать их подробно, только опишем в общих чертах. Основное изменение – это передача значений параметровклассапо ссылке и присвоениеобъектовпо ссылке, а не по значению, как это было в PHP4. В PHP5 если создаются две равные переменные типаобъект, то они указывают на одно значение и изменяются одновременно (мы приводили похожий пример с переменными строкового типа). В связи с этим появился новый механизм для создания копийобъектов– так называемое клонирование. В PHP4 всеметодыи переменныеклассадоступны извне, т.е. они всегда являются открытыми. В PHP5 переменные иметодыможно делать открытыми (доступными отовсюду), закрытыми (доступными только внутрикласса) и защищенными (доступными внутриклассаи в его производныхклассах). Кроме того, появилась возможность создаватьинтерфейсыиабстрактные классыи многое другое. В целомобъектная модель в PHP5значительно усовершенствована для более точного соответствия объектно-ориентированной парадигме программирования.

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

Итак, мы хотели по выбору пользователя генерировать форму для ввода описания статьи или человека и отображать данные, введенные в эту форму. Попробуем решить эту задачу, используя объектно-ориентированный подход. Для начала создадим форму, где пользователь выбирает, что он хочет создать, – описание статьи или человека (точнее, это будут две формы):

<form action="task1.php">

Создать описание статьи: <input type=submit

name=art_create

value="Create Article">

</form>

<form action="task1.php">

Создать описание личности: <input

type=submit name=pers_create

value="Create Person">

</form>

Теперь напишем файл для обработки этих форм. В нем создадим два класса– статьи и личности. У каждогоклассаимеетсяметоддля инициализации его переменных иметоддля отображенияобъектовданногокласса. При решении задачи будут использованы две функции, встроенные в PHP для работы склассамииобъектами. Это функцияget_class(объект), возвращающая имякласса, экземпляром которого являетсяобъект, переданный ей в качестве параметра. И функцияget_class_vars(имякласса), которая возвращает массив всехсвойствклассаи их значений по умолчанию. Аналогично можно получить массив имен всехметодовкласса:get_class_methods(имякласса)

Листинг 6.6. Использование объектно-ориентированного подхода (html, txt)

Заключение

Итак, мы изучили основные понятия объектной модели, используемой в языке PHP. Были описаны правила создания классови их представителей-объектов, способы задания начальных значений переменнымкласса, способы получения значенийсвойстви вызовметодовклассов.

Работа с массивами данных

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

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

Массивы

В одной из первых лекций мы рассказывали о том, как можно создать массивданных. Напомним, чтомассивможносоздатьдвумя способами:

  1. С помощью конструкции array

  2. $array_name = array("key1"=>"value1",

  3. "key2"=>"value2");

  4. Непосредственно задавая значенияэлементаммассива

  5. $array_name["key1"] = value1;

Например, нам нужно хранить список документов, которые будут удалены из базы данных. Естественно хранить его в виде массива,ключомв котором будет идентификатор документа (его уникальный номер), азначением– название документа. Этотмассивможносоздатьтаким образом:

<?

$del_items = array("10"=>"Наука и жизнь",

"12"=>"Информатика");

$del_items["13"] = "Программирование на Php";

// добавляем элемент в массив

?>

Операции с массивами

Массив– это тип данных, с данными этого типа должны быть определеныоперации. Какие жеоперацииможно производить смассивами?Массивыможноскладыватьисравнивать.

Складывают массивыс помощью стандартного оператора «+». Вообще говоря, этуоперациюпо отношению кмассивамточнее назвать объединением. Если у нас есть двамассива,$aи$b, то результатом ихсложения(объединения) будетмассив$c, состоящий из элементов$a, к которым справа дописаны элементымассива$b. Причем, если встречаются совпадающиеключи, то в результирующиймассиввключается элемент из первогомассива, т.е. из$a. Таким образом, еслискладываются массивыв языке PHP, от перемены мест слагаемых сумма меняется.

<?

$a = array("и"=>"Информатика",

"м"=>"Математика");

$b = array("и"=>"История","м"=>"Биология",

"ф"=>"Физика");

$c = $a + $b;

$d = $b +$a;

print_r($c);

/* получим: Array([и]=>Информатика

[м]=>Математика [ф]=>Физика) */

print_r($d);

/* получим: Array([и]=>История

[м]=>Биология [ф]=>Физика) */

?>

Пример 7.1. Сложение массивов (html, txt)

Сравнивать массивыможно, проверяя их равенство или неравенство либо эквивалентность или неэквивалентность. Равенствомассивов– это когда совпадают все парыключ/значениеэлементовмассивов. Эквивалентность – когда кроме равенствазначенийиключейэлементов требуется еще, чтобы элементы в обоихмассивахбыли записаны в одном и том же порядке. Равенствозначенийв PHP обозначается символом «==», а эквивалентность – символом «===».

<?

$a = array("и"=>"Информатика",

"м"=>"Математика");

$b = array("м"=>"Математика",

"и"=>"Информатика");

if ($a == $b) echo "Массивы равны и";

else echo "Массивы НЕ равны и ";

if ($a === $b) echo " эквивалентны";

else echo " НЕ эквивалентны";

// получим echo "Массивы равны и

НЕ эквивалентны"

?>

Пример 7.2. Сравнение массивов (html, txt)

Далее рассмотрим еще одну важную операцию с массивом– подсчетколичества его элементов. Для ее реализации в PHP есть специальная функция.

Функция count

Не раз уже мы использовали функцию count(), чтобы вычислитьколичество элементов массива. На самом деле эта функция вычисляет число элементов в переменной вообще. Если применить ее к любой другой переменной, она возвратит1. Исключение составляет переменная типаNULL–count(NULL)есть0. Кроме того, применяя эту функцию к многомерномумассиву, чтобы получитьчисло его элементов, нужно использовать дополнительный параметрCOUNT_RECURSIVE.

<?

$del_items = array("langs" => array(

"10"=>"Python", "12"=>"Lisp"),

"other"=>"Информатика");

echo count($del_items) . "<br>";

// выведет 2

echo count($del_items,COUNT_RECURSIVE);

// выведет 4

?>

Пример 7.3. Применение функции count() (html, txt)

Мы не будем повторять все, что было сказано о массивахв предыдущих лекциях. В этой лекции мы рассмотрим некоторые встроенные функции для работы смассивами. И начнем мы с функций дляпоиска значений в массиве.

Соседние файлы в папке сети эвм