【发布时间】:2016-09-30 19:10:21
【问题描述】:
我通过 PHP 开发了 Web 应用程序,但没有使用任何框架。我的应用程序主要有两种类型的文件 - 前端和后端。第一种类型可能包含 HTML、PHP、CSS、JavaScript (jQuery) 和后端 - 只有 PHP。我有一个名为pg_db_connection 的类与数据库建立连接,还有一个类session 创建用户的Web 会话(php 的函数session_start())并在users 数据库表中维护一些变量,如“用户名”、用户ID等等
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 中的更多内容。需要连接到数据库,因为 Web 用户有权访问的文件存储在数据库中。如果我想在这个前端文件中加载任何动态数据,我会使用 jQuery 的 post 或 load 函数并调用一个后端文件。这个后端文件在大多数情况下包括pg_db_connection,如果还需要,执行一些数据库查询 - 对数据做更多的工作(用 HTML 标签包装,或者以某种方式格式化数组然后json_encode 它),然后检索HTML 或 JSON 到前端文件。然后在 jquery 的 load 或 post 回调方法中,将这个 HTML 写入需要的地方,或者 JSON 以某种方式转换为 HTML 并再次写入 HTML 中的某个位置。
我想知道我是否使用任何已知的架构模式。或者哪种架构模式最接近所描述的方法?
【问题讨论】:
-
对我来说这看起来像普通的 OOP。看不到任何特定的架构模式。如果您想知道为什么您的问题被否决,那是因为它与 StackOverflow 无关。这类问题有CodeReview。
-
@apokryfos 你好!这个问题与代码审查无关,因为它不是要求审查/改进,而是关于代码本身的属性(它是“架构模式”)。在将用户指向那里之前,请确保您知道 SE 网站的主题是什么!
标签: php architectural-patterns