Какой архитектурный рисунок я использую?

Я разработал веб-приложение без использования каких-либо рамок через PHP. Мое приложение в основном имеет два типа файлов — внешние и внутренние. Первый тип может содержать HTML, PHP, CSS, JavaScript (jQuery), а бэкэнды — только PHP. У меня есть один класс под названием pg_db_connection который устанавливает связь с базой данных и одним классом session которые создают веб-сеанс пользователя (функция php session_start()) и поддерживать некоторые переменные, такие как «имя пользователя», идентификатор пользователя в users таблица базы данных и т. д.

pg_db_connection класс имеет свойство $link который является ресурсом базы данных, полученным из pg_connect(), Этот класс также имеет некоторые функции, такие как query($query, $b_result = false, &$affected_rows = null), insert($table, $values, $columns = null, &$affected_rows = null), begin(), commit(), rollback(), и больше. В начале каждого файла интерфейса я создаю объект типа session и выполнить:

$db = new pg_db_connection($db_config,$log_mng);
$session = new session($db);

#if the session is not active go to login.php frontend and force the user to login
if(!$session->is_active())
{
header("Location: /html/admin/login.php?url=" . urlencode($_SERVER['REQUEST_URI']));
exit;
}# If session is active proceed below
# Auto refresh the session
$session->autoReresh();

# Check if the current user have privileges to access this frontend file (second param is file path, third - file name)
if(!($session->passpermit($session->user_id(), $_SERVER['SERVER_ADDR'], dirname(__FILE__)."/", basename(__FILE__))))
{
header("Location: /html/admin/access_denied.html");
exit;
}

Магазин сессионного класса user_id, username и больше в $_SESSION, Требуется подключение к базе данных, поскольку файлы, доступ к которым имеет веб-пользователь, хранятся в базе данных. Если я хочу загрузить любые динамические данные в этот файл интерфейса, я использую jQuery post или же load функции и сделать вызов одного внутреннего файла. Этот бэкэнд-файл в большинстве случаев включает pg_db_connectionвыполнить некоторые запросы к базе данных, если это также необходимо — выполнить дополнительную работу с данными (обернуть тегами HTML или как-то отформатировать массив, а затем json_encode это), а затем получить HTML или JSON в файл внешнего интерфейса. Затем в методе jquery load или post callback этот HTML пишется там, где это необходимо, или JSON каким-то образом преобразуется в HTML и снова записывается где-то в HTML.

Мне интересно, если я использую какой-либо известный архитектурный образец. Или какой архитектурный паттерн наиболее близок к описанному подходу?

-2

Решение

Насколько мне известно, ваша прикладная архитектура не соответствует конкретному архитектурному шаблону.
Как правило, вы используете клиент (внешний интерфейс) — архитектура сервера (внутреннего интерфейса) и вы получаете данные из внешнего интерфейса с запросами JavaScript / Ajax.
Вы не указываете архитектуру своего кода бизнес-логики … поэтому нет способа определить, используете ли вы шаблон MVC и т. Д. …
Проверьте эту ссылку, чтобы узнать больше:
https://softwareengineering.stackexchange.com/questions/158260/is-there-any-design-pattern-except-mvc-for-web

Я также рекомендую вам прочитать эту статью, чтобы лучше понять решения по разработке веб-приложений:
Шаблоны дизайна веб-приложений

Из списка в этой ссылке я бы сказал, что вы используете следующие шаблоны проектирования:

  • Запрос Обрабатывающий: Page Controller (очевидно, у вас есть один класс записей, где вы контролируете аутентификацию и авторизацию)

  • презентация: Супервизор Presenter (если я вас правильно понял, вы выполняете основную логику на сервере, но затем делегируете некоторые задачи замены UI / JSON-содержимого и т. Д. Frontend JavaScript)

  • Макет страницы (пользовательский интерфейс): Преобразование / двухэтапное представление (вы создаете с помощью jQuery какой-то HTML из JSON, верно?)

  • Упорство: Транзакционное хранилище данных (потому что вы используете begin (), commit (), rollback ())

Немного критики:
pg_db_connection подразумевается, что вы должны использовать postgres DB?
… так что вы не можете легко переключать свою базу данных … и вам приходится иметь дело с подверженными ошибкам и рискованными для безопасности низкоуровневыми SQL-запросами …
Пользовательская обработка сеансов также довольно подвержена ошибкам со многими неудачами …
например

header("Location: /html/admin/login.php?url=" . urlencode($_SERVER['REQUEST_URI']))

…может привести к уязвимости перенаправления … и я даже не хочу знать, что вы делаете в login.php

относительно выход; Вы можете прочитать здесь, почему выход() является неоптимальным:
Лучшая практика для выхода из PHP ()

В любом случае, есть причины, по которым люди на самом деле НЕ пишут свою собственную архитектуру веб-приложений с нуля, а скорее вдохновляются или используют PHP-фреймворк:

  • Сделать возможным быстрое развитие
  • Обеспечить хорошо организованный, многократно используемый и поддерживаемый код
  • Позволяет расти со временем, так как веб-приложения, работающие на платформах, масштабируемы
  • Избавить вас от забот о низком уровне безопасности сайта
  • Следуйте шаблону MVC (Model-View-Controller), который обеспечивает разделение представления и логики
  • Продвижение современных методов веб-разработки, таких как инструменты объектно-ориентированного программирования

Ознакомьтесь с некоторыми современными фреймворками, представленными в этом блоге:
http://www.hongkiat.com/blog/best-php-frameworks/
(это также источник по вышеупомянутым причинам использования фреймворка …)
Может быть, что-то подходит вашему варианту использования, не слишком медленно / раздутый / и т.д …

1

Другие решения

Других решений пока нет …