А это клавиатура, с помощью которой я творю...
http://kurepin.ru/php/slang.ru/3/
Rambler's Top100
Строим сайт slang.ru, глава 3

Строим сайт slang.ru

Глава 3. Планирование-1: class_word и class_dic

Один очень умный человек сказал, что в программировании большую (ударение на первом слоге) часть времени надо посвятить планированию проекта. Я согласен с этим утверждением на сто процентов!

Любой более-менее крупный проект следует писать с применением объектно-ориентированного программирования (ООП). Это не только мое мнение, это мнение большинства программистов, знающих свое дело. Если вам не знакомы основополагающий принципы ООП, снова отсылаю вас к моему древнем Курсу, который позволит вам понять и освоить ООП буквально за час-другой.

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

Соответственно, вспомнив о том, что сайт наш посвящен словарям, давайте разрабатывать объектно-ориентированную модель сайта slang.ru с молекул.

Пожалуй, самым маленьким объектом системы slang.ru можно назвать - слово. Из слов составляются словари, которые потом будут объединены в тематические группы и так дальше.

Первым классом проекта назовем класс слов: class_word

Можно сразу описать его каркас и уложить в виде файла word.class в папку /req нашего проекта:

<?  require(str_replace('/www','/req',$_SERVER['DOCUMENT_ROOT']).'/utils.class');  class class_word extends class_utils  {  } ?>

Заинтересовала первая строка? Все очень просто: для работы сайта нам необходимо описать ряд переменных, обеспечить доступ к базе данных и забронировать место для обязательных утилит. Все это мы опишем в классах init, mysql и utils, от которых уже и будем растить наше древо классов.

Про str_replace: можно было бы написать require('путь до файла utils.class'), но я предпочел взять из переменной окружения путь к сайту ('/opt/www/slang.ru/www' в моем случае) и заменить 'www' на 'req' с помощью str_replace, чтобы получить путь к папке 'req'. Такая конструкция позволяет копировать или переносить сайт по разным директориям без необходимости исправлять путь во всех class-файлах.

Содержимое классов init, mysql и utils опишем чуть позже, когда закончим планирование.

Поехали дальше. Что мы можем сложить из слов? Можем сложить уже сами словари. Соответственно, следующим классом у нас получается класс class_dic в файле dic.class:

<?  require(str_replace('/www','/req',$_SERVER['DOCUMENT_ROOT']).'/word.class');  class class_dic extends class_word  {  } ?>

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

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

create table tbl_word
(
 w_id      int unsigned not null auto_increment primary key,
 w_word    varchar(100) not null default '',
 w_enable  enum('Y','N') not null default 'Y'
);

w_enable - это флаг "видимости" слова; он наверняка нам пригодится, поэтому я его сразу включил в таблицу слов.

Таблицы будут создаваться и модифицироваться в процессе создания проекта, поэтому все sql-команды предлагаю вам последовательно в хронологическом порядке складывать в текстовый файл и сохранять, скажем, в директории /info.

Классовые переменные, хранящие данные о слове, предлагаю называть аналогично с названиями полей в sql-таблице:

<? var $w_id$w_word$w_enable?>

Основными функциями по работе со словами очевидно будут следующие:

<? function word_add() // функция добавления слова { } function word_update() // функция изменения слова { } function word_delete() // функция удаление слова { } function word_prepare() // функция подготовки данных { }
word_prepare() - функция по проверке и подготовке данных перед их отправкой в базу данных. Эта функция очевидно должна вызываться из функций по добавлению и изменению слова.

Теперь разберемся со словарями. По сути, на начальном этапе структура базы данных и функции словарей - очень похожи на структуру и функции class_word, от которой мы и породим class_dic:

<?  require(str_replace('/www','/req',$_SERVER['DOCUMENT_ROOT']).'/word.class');  class class_dic extends class_word  {    } ?>

Таблица:

create table tbl_dic
(
 d_id      smallint unsigned not null auto_increment primary key,
 d_name    varchar(255) not null default '',
 d_enable  enum('Y','N') not null default 'Y'
);

идентификатор, название и "видимость".

Переменные:

<? var $d_id$d_name$d_enable?>

Функции:

<? function dic_add() // добавление словаря { } function dic_update() // изменение описания/параметров словаря { } function dic_delete() // удаление словаря { } function dic_prepare() // функция подготовки данных { } ?>

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





[шаг назад] [печатать] [в начало сайта]



copyright ©2000-2017 Ruslan Kurepin