Ich habe eine Webanwendung entwickelt, ohne ein Framework über PHP zu verwenden. Meine Anwendung hat hauptsächlich zwei Arten von Dateien - Frontends und Backends. Der erste Typ kann HTML, PHP, CSS, JavaScript (jQuery) und die Backends - nur PHP - enthalten. Ich habe eine Klasse pg_db_connection
genannt, die session
Verbindung mit der Datenbank und eine Klasse macht die Benutzer-Web-Session (PHP-Funktion session_start()
) und halte einige Variablen wie „username“ zu erstellen, Benutzer-ID in der users
Datenbanktabelle usw.Welches architektonische Muster verwende ich?
Die pg_db_connection
Klasse hat eine Eigenschaft $link
, die eine Datenbankressource ist, die aus pg_connect()
gewonnen wird. Diese Klasse hat auch einige Funktionen wie query($query, $b_result = false, &$affected_rows = null)
, insert($table, $values, $columns = null, &$affected_rows = null)
, begin()
, commit()
, rollback()
und mehr. Im Anfang jeder Frontend-Datei erstellen, I-Objekt vom Typ session
und ausführen:
$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;
}
Session-Klasse speichert user_id, username
und mehr in $_SESSION
. Die Verbindung zur Datenbank ist erforderlich, da die Dateien, auf die der Webbenutzer Zugriff hat, in der Datenbank gespeichert sind. Wenn ich irgendwelche dynamischen Daten in dieser Frontend-Datei laden möchte, benutze ich die Funktionen post
oder load
von jQuery und mache einen Aufruf an eine Backend-Datei. Diese Backend-Datei enthält in den meisten Fällen pg_db_connection
, führen Sie einige Datenbankabfragen aus, wenn sie auch benötigt werden - machen Sie mehr Arbeit an den Daten (mit HTML-Tags umhüllen oder formatieren Sie das Array und dann json_encode
) und rufen Sie dann HTML oder JSON ab die Frontend-Datei. Dann wird dieser HTML-Code in der Lade- oder Post-Callback-Methode von jquery geschrieben, wo er benötigt wird, oder der JSON wird irgendwie in HTML umgewandelt und wieder irgendwo in den HTML geschrieben.
Ich wundere mich, wenn ich irgendeine Art von bekannten architektonischen Muster verwende. Oder welches architektonische Muster ist dem beschriebenen Ansatz am nächsten?
Das sieht aus wie normale OOP für mich. Ich kann kein bestimmtes architektonisches Muster sehen. Wenn Sie sich fragen, warum Ihre Frage abgelehnt wird, liegt das daran, dass sie für StackOverflow nicht verfügbar ist. Für diese Art von Fragen gibt es [CodeReview] (http://codereview.stackexchange.com/). – apokryfos
@apokryfos Hallo! Diese Frage wäre bei der Code Review off-topic, da sie keine Überprüfung/Verbesserung, sondern eine Eigenschaft des Codes selbst ("Architekturmuster") verlangt. Bitte stellen Sie sicher, dass Sie wissen, was gerade für eine SE-Site aktiv ist, bevor Sie einen Nutzer dorthin verweisen! – syb0rg