Хабрахабр

[Из песочницы] Архитектура проекта или какие компоненты должны присутствовать. Часть 1. PHP

Предисловие

За всё время работы программистом, я сталкивался с различными задачами по доработке сайтов. И отметил одно: функций много, по разных файлам разбросанно, общей картины пространства имён не видно, где то (например в yii) нужно ещё инициировать проект, чтобы через phpmyadmin увидеть актуальные таблицы… я не говорю уже о контроле созданного проекта, который не централизован вовсе (if,elseif где попало). А перевод на git технологии перевёл код на уровень: построили из того что было под рукой.

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

Зона абы как

PHP-коды по методу «ООП на классах» я выявил как некие зависания в каких то (не ясных) этапах разработок. Раздрай какой то:

  1. Нет целей проекта и описаний
  2. Неструктурированно пространство имён
  3. Неструктурированны файлы
  4. Уравнивание разных по назначению алгоритмов

Свобода – это осознанная необходимость

Я утвердил что мой подход к программированию станет дисциплинированным и свободным. Не легко было, но я справился, и выявил 4-е важных компонента построения проекта (как для ядра, так и для интерфейса), которые полностью соответствовали моему устремлению:

  1. Conditions, где создаются права проекта
  2. Space, где создаются роли проекта
  3. Distribution, где создаются возможности проекта
  4. Realization, где создаются способности проекта

Зафиксируем эту аббревиатуру как CSDR.

Архитектура проекта на CSDR

Согласование

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

Проектирование

Далее из этого вытекает, что дальше речь будет о компонентах проекта, а по моим расчётам (и подсказкам таки еврейских братьев) наш мир 4-х-мерный: прошлое (наша опора), будущее (наша среда), объединяющее (таки да, торговля и подарки важны) и настоящее (наши дела). Основавшись на таких знаниях, и признав, что лучшего программирования согласованного с ходом нашего времени не найти, я спроектировал такие имена компонентов для создания проекта: Conditions, Space, Distribution и Realization.

Итак: Сделаю небольшой перевод аббревиатуры CSDR, для дальнейшего удобства изъяснений.

  1. Conditions, где создаются права проекта -> Рефлексы
  2. Space, где создаются роли проекта -> Места
  3. Distribution, где создаются возможности проекта -> Связи
  4. Realization, где создаются способности проекта -> Реакции

Объект

Связи предоставят реакциям (алгоритмам) все значения с необходимых мест (с типом переменная).

Проект

Когда же из компонентов начал создавать 4-х-мерный проект, то заметил, что рефлексы и места из за своих особенностей (необходимости вложенности) должны выстраиваться гомоархически (в субъекты), а вот связи и реакции гетерархично (в объекты) по причине завязки на места.

Параметры

Для рефлексов определены такие параметры:

  1. Ориентир, где идёт обозначение рефлекса
  2. Условия, где код условия («if»)
  3. Расчёты, где идёт описание рефлекса
  4. Места, где перечисляются id мест для активации
  5. Вложение, подкатегории рефлексов

Для мест определены такие параметры:

  1. Смысл, где идёт обозначение места
  2. Тип, где идёт назначение места
  3. Связи, где перечисляются id связей для активации
  4. Вложение, подкатегории мест / значение

Для связей определены такие параметры:

  1. Импорт вложений с мест, где перечисляются id мест (с типом переменная)
  2. Экспорт вложений в места, где перечисляются id мест (с типом переменная)
  3. Пример импорта вложений с мест
  4. Пример экспорта вложений в места
  5. Реакция, где перечисляются id реакций для активации

Для реакций определены такие параметры:

Функция, где алгоритм 1.

Цикл

Далее я установил необходимую последовательность активации компонентов (последовательный цикл):

  1. Реакции активируют рефлексы
  2. Рефлексы активируют места
  3. На местах активируются связи
  4. Связи активируют реакции

Итогом получился замкнутый на себя проект, вмещая в себя все необходимые и важные по своей функциональности компоненты, обеспечивающие адекватную реакцию на внешнее событие (запрос).

Пример

Эскиз примера (стрелки обозначают влияние / активацию):

Далее по теме: Трансформер-интерфейс на JS посредством CSDR.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть