Архитектура проекта или какие компоненты должны присутствовать. Часть 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.
Источник: https://habr.com/ru/post/474296/


Интересные статьи

Интересные статьи

В прошлой статье я рассказал об итераторах и генераторах в javascript, но не привел никаких практичных примеров. Этой статьей я хочу заполнить этот пробел и, на примере п...
В ноябре завершился последний в этом году коммитфест изменений PostgreSQL 14. О двух предыдущих, июльском и сентябрьском уже говорилось. Громкими киллер-фичами нас не побаловали, наде...
Приветствую, уважаемые любители и знатоки Python! Если вы используете в своих приложениях Python и такие кроссплатформенные инструменты как фреймворк Kivy и библиотеку материального ...
В данной статье я хочу подробно рассмотреть процесс публикации с нуля Java артефакта через Github Actions в Sonatype Maven Central Repository используя сборщик Gradle. Данную статью решил напис...
Продолжаем серию «C++, копаем в глубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Эта статья посвящена перегрузке операторов....