Im vorherigen Blog haben wir die drei Präsentationsschichtmodi Front-End-Controller, Seiten-Controller und Anwendungs-Controller kennengelernt. Wenn wir sagen, dass sie die Kommunikation zwischen der Außenwelt und der Außenwelt sorgfältig organisieren Das Innere des Systems. Dann besteht die Aufgabe der Geschäftslogikschicht darin, den Geschäftsteil der Anwendung abzuwickeln. Die Geschäftslogikschicht sollte von externem „Rauschen“ ferngehalten werden. Die Geschäftslogik ist der grundlegende Zweck der gesamten Anwendung, und andere Teile des Systems dienen diesem Teil.
Hier sind zwei häufig verwendete Domänenlogikmuster: Transaktionsskriptmuster und Domänenmodellmuster.
1. Transaktionsskript
1.1 Konzept
Transaktionsskript: Verwenden Sie Prozesse, um die Geschäftslogik zu organisieren, und jeder Prozess verarbeitet eine einzelne Anfrage aus der Präsentation Schicht . Es wirkt etwas zu abstrakt. Die meisten Geschäftsanwendungen können als eine Reihe von Transaktionen betrachtet werden. Manchmal zeigt eine Transaktion lediglich Datenbankinformationen an, und manchmal umfasst sie viele Schritte zur Berechnung der Prüfsumme. Transaktionsskripte organisieren diese gesamte Logik in einem einzigen Prozess, und jede Transaktion verfügt über ein eigenes Transaktionsskript, was bedeutet, dass sie über einen eigenen Ausführungsprozess verfügt. Beachten Sie jedoch, dass gemeinsame Unteraufgaben zwischen Transaktionen in mehrere Unterroutinen zerlegt werden können.
1.2 Warum Transaktionsskripte verwenden
Der Vorteil des Transaktionsskriptmodus besteht darin, dass Sie schnell die gewünschten Ergebnisse erzielen können. Jedes Skript verarbeitet die Eingabedaten gut und manipuliert die Datenbank, um die gewünschten Ergebnisse sicherzustellen. Daher handelt es sich um einen schnellen und effektiven Mechanismus, der bei komplexen Designs nicht viel Zeit und Mühe erfordert. Er eignet sich perfekt für kleine Projekte mit engen Fristen.
1.3 Transaktionsskripte implementieren
Aufgrund meiner Berufserfahrung verwenden viele Programmierer dieses Modell, ohne es zu wissen, darunter auch ich zuvor.
Angenommen, es gibt Unternehmen, die Blogs veröffentlichen und Blogs löschen, dann behandeln Sie diese beiden Unternehmen jeweils als zwei Transaktionsskripte.
PHP-Code
- //Erstellen Sie hier eine Basisklasse für die Datenverarbeitung unter der Annahme von pdo
- Zusammenfassung Klasse Basis { 🎜>
-
- $dsn = woobaseApplicationRegistry::getDSN();
🎜> - neu woobaseAppAusnahme( „Kein DSN“ );
-
} 🎜> selbst ::$DB =
new- PDO($dsn); self::$DB ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_Exception);
- }
-
- geschützt Funktion doStatement() { <.>
-
Klasse- blogManager extends Base {
-
statisch- $add_blog = "INSERT INTO Blog (Name) Werte(?)";
- static $del_blog =
"DELETE FROM blog WHERE (?)"- ; //Add
Blog- Transaction Script
-
Funktion
addBlog(...) { - //Verarbeitung von Parametern, Schreibweise von SQL im add_blog-Format, Aufruf der übergeordneten Klasse doStatement um eine Reihe von Unterprogrammen auszuführen und Freunde zu benachrichtigen. . .
-
Transaktionsskript Funktion
delBlog(...) { - / /Verarbeiten Sie Parameter, buchstabieren Sie SQL im del_blog-Format und rufen Sie zur Ausführung die übergeordnete Klasse doStatement auf.
} } - ?> Dieses Beispiel ist sehr einfach, spiegelt aber gerade aufgrund seiner Einfachheit die Vorteile von Transaktionsskripten wider. Wenn Sie eine komplexere Anwendung schreiben, ist das Projekt durch diesen Ansatz weniger skalierbar, da Transaktionsskripte unweigerlich ineinander übergehen, was zu einer Codeduplizierung führt.
2. Domänenmodell -
2.1 Konzept Domänenmodell: Es ist schwierig, es klar in Worten zu erklären. Vereinfacht ausgedrückt symbolisiert das Domänenmodell die verschiedenen Teilnehmer des Projekts in der realen Welt. Der Grundsatz „Alles ist ein
Objekt- “ kommt hier am deutlichsten zum Ausdruck. An anderer Stelle tragen Objekte immer verschiedene spezifische Verantwortlichkeiten, aber in Domänenmustern werden sie oft als eine Reihe von Attributen und zugeordneten Agenten beschrieben. Es sind bestimmte Dinge, die bestimmte Dinge tun. 2.2 Warum das Domänenmodell verwenden
- In echtem Code gibt es viele Transaktionsskriptmuster, und Sie werden feststellen, dass doppelter Code ein häufiges Problem darstellt. Wenn verschiedene Transaktionen dieselbe Aufgabe ausführen möchten, scheint die Duplizierung die schnellste Lösung zu sein, was jedoch die Kosten für die Codewartung erheblich erhöht. Manchmal kann es durch Refactoring gelöst werden, aber langsam kann das Kopieren und Einfügen zu einem unvermeidlichen Teil der Entwicklung werden.
2.3 Implementierung des Domänenmodells
Um einen Vergleich zu erreichen, zitieren Sie das Beispiel des Transaktionsmodells und ordnen Sie die Domänenmodellklasse direkt der Tabelle der relationalen Datenbank zu (dies erleichtert die Entwicklung)
PHP-Code
- //Erstellen Sie hier eine Basisklasse für die Datenverarbeitung unter der Annahme von pdo
- Zusammenfassung Klasse Basis { 🎜>
- $dsn = woobaseAnwendungRegistrierung:: getDSN( );
-
🎜>$dsn ) ) { DSN"
); - }
$DB- = neu PDO( $dsn ); self::
$DB- -> ;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_Exception); 🎜> geschützt Funktion doStatement() {
- //SQL ausführen
-
}
- }
- class blogModel erweitert Base{
- Funktion addBlog(...){}
-
}
-
//Erstellen Sie eine Basisklasse für das Domänenmodell -
abstract- class DomainObject {
-
private- $id;
- //$id ist die Primärschlüssel-ID der Tabellendaten
- function __construct( $id=null ) {
-
>
- }
- . 🎜>
- return $this->id;
} -
- //Denken Sie daran, dass alles ein Objekt
-
statisch function getCollection( $type ) {
-
//Holen Sie sich das zu bedienende Objekt
-
}
-
}
-
Klasse Blog
extends- DomainObject { private
$name- ;
- > $feed;
-
>=null,
$name- =null ) { $this->name = $name;
-
$this->feed = self::getCollection("\woo\domain\Feed");
-
parent::__construct(
$id- );
- }
-
- Funktion addBlog(...){
- //Rufen Sie die blogModel-Methode auf, um
-
🎜> hinzuzufügen
$this- ->feed = $Feed;
-
?>
-
2.4 ZusammenfassungDas Domänenmodell ist einfach gestaltet. Es hängt von der Komplexität der Geschäftslogik ab. Der Vorteil der Verwendung eines Domänenmodells besteht darin, dass Sie sich beim Entwurf des Modells auf die Probleme konzentrieren können, die das System lösen möchte, während andere Probleme (z. B. Persistenz und Leistung usw.) von anderen Ebenen gelöst werden können. In Implementierungsprojekten konzentrieren sich die meisten Programmierer beim Entwurf des Domänenmodells immer noch zur Hälfte auf die Datenbank. Die Trennung des Domänenmodells von der Datenschicht ist mit Kosten verbunden, und Sie können den Datenbankcode genauso gut direkt in das Modell einfügen (obwohl Sie möglicherweise einen Dateneintrag verwenden, um das eigentliche SQL zu verarbeiten). Für relativ einfache Modelle, insbesondere wenn Klassen eins zu eins Datentabellen entsprechen, ist diese Methode durchaus machbar und kann den Zeitaufwand reduzieren, der durch die Erstellung externer Systeme zur Koordinierung von Objekten
und Datenbanken entsteht. -
Das Obige stellt das Transaktionsskript und das Domänenmodell der Geschäftslogikschicht vor, einschließlich des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn