Аргерих Л. О языке РНР. Часть 1. Страница 99


♦ необходимости повторной модификации членов для повторного исполь­зования объекта. Иногда по невнимательности в очередном проекте мож­но создать новые ошибки. Как раз этого мы стремимся избежать.

Хорошее практическое правило: проектируйте класс так, чтобы в нем были сервисы, выполняющие все, что вы собираетесь делать с объектом. Никогда не обращайтесь к членам извне класса и всегда надлежащим образом инкапсу­лируйте свои классы, чтобы воспользоваться преимуществами сокрытия ин­формации. Некоторые языки дают возможность вообще запрещать доступ к членам, объявляя их закрытыми или защищенными от доступа извне. В нас­тоящее время РНР не обладает такими возможностями, но весьма полезно придерживаться правильных приемов кодирования.

Наследование

Поговорив об основных конструктивных элементах объектно-ориентирован­ной программы и некоторых хороших эвристиках, займемся практическим применением возможностей, предоставляемых объектным подходом, для создания четких стратегий решения сложных задач.

Допустим, мы хотим организовать интер­нет-магазин информационных носителей типа amazon.com. Предположим, что мы хо­тим торговать компакт-дисками, програм­мами, VHS и DVD, а также книгами. В тра­диционном функциональном программиро­вании мы могли бы попытаться создать обычную структуру для хранения данных об этих носителях типа такой (рис. 5.2):

Очевидно, что между книгами, фильмами, компакт-дисками и программа­ми есть много различий, поэтому может потребоваться создать некоторые дополнительные структуры для хранения данных о конкретных типах носи­телей (рис. 5.3).

Теперь программа, которая выводит на экран все предметы, занесенные в массив, может выглядеть так:

<?php

// создадим небольшой массив с 2 записями $medialtems = array();

$books = arrayO; $CdS = arrayO;

$item->ic = 1;

$item->type = "book";

$item->name = "Professional PHP 4";

$item->inStock = 33;

$item->price = 49.95;

$item->rating = 5;

$medialtems[] = $item;

$book->isbn = 1246534343443;

$book->author = "Ken Egervari, et. al. "; $book->numberOfPages = 500; $books[$item->id] = $book;

$item->id = 2;

$item->type = "cd";

$item->name = "This Way"; $itern->inStock = 120;

$item->price = 16.95; $item->rating = 4;

$medialtems[] = $item;

$cd->serialNo = 323254354;

$cd->artist = "Jewel";

$cd->numberOfTracks = 13; $cds[$item->id] = $cd;




Сегодня строительство дома или коттеджа является одним из самых распространенных предложений на рынке недвижимости. Потому при выборе строительной компании следует знать, что доверять следует лишь профессионалам.