Heim >Backend-Entwicklung >PHP-Tutorial >Transaktionsskript und Domänenmodell der Geschäftslogikschicht

Transaktionsskript und Domänenmodell der Geschäftslogikschicht

WBOY
WBOYOriginal
2016-07-29 09:15:121414Durchsuche

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 Transaktionsskript und Domänenmodell der Geschäftslogikschicht

  1. //Erstellen Sie hier eine Basisklasse für die Datenverarbeitung unter der Annahme von pdo
  2. Zusammenfassung Klasse Basis { 🎜>
  3.                                                                                                                                                                                                                                                
  4.  
  5. $dsn = woobaseApplicationRegistry::getDSN();
  6.                                                                                              🎜>
  7. neu woobaseAppAusnahme( „Kein DSN“ );
  8. } 🎜> selbst ::$DB =
  9. new
  10. PDO($dsn); self::$DB ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_Exception);
  11.  
  12.  geschützt Funktion doStatement() { <.>
  13.                                                                                                 
  14. Klasse
  15. blogManager extends Base {
  16. statisch
  17. $add_blog = "INSERT INTO Blog (Name) Werte(?)";
  18. static $del_blog =
  19. "DELETE FROM blog WHERE (?)"
  20. ; //Add
  21. Blog
  22. Transaction Script
  23. Funktion
  24. addBlog(...) {
  25. //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. . .
  26.                                                                  Transaktionsskript  Funktion
  27. delBlog(...) { 
  28.  / /Verarbeiten Sie Parameter, buchstabieren Sie SQL im del_blog-Format und rufen Sie zur Ausführung die übergeordnete Klasse doStatement auf.
  29. }  
  30. }  
  31. ?> 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.
  32. 2. Domänenmodell
  33. 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
  34. Objekt
  35. “ 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
  36. 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 Transaktionsskript und Domänenmodell der Geschäftslogikschicht

    1. //Erstellen Sie hier eine Basisklasse für die Datenverarbeitung unter der Annahme von pdo
    2. Zusammenfassung Klasse Basis { 🎜>
    3.                                                                                                                     $dsn = woobaseAnwendungRegistrierung:: getDSN( );
    4. 🎜>$dsn ) ) { DSN"
    5. );
    6. }
    7. $DB
    8. = neu PDO( $dsn ); self::
    9. $DB
    10. -> ;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_Exception); 🎜> geschützt Funktion doStatement() {
    11. //SQL ausführen
    12.  
    13. class blogModel erweitert Base{
    14. Funktion addBlog(...){}
    15. }
    16. //Erstellen Sie eine Basisklasse für das Domänenmodell
    17. abstract
    18. class DomainObject {
    19. private
    20. $id;
    21. //$id ist die Primärschlüssel-ID der Tabellendaten
    22. function __construct( $id=null ) {
    23.                                           >
    24. }
    25. . 🎜>
    26.  
    27. return $this->id; 
    28.  } 
    29. //Denken Sie daran, dass alles ein Objekt
    30. statisch function getCollection( $type ) {
    31. //Holen Sie sich das zu bedienende Objekt
    32. Klasse Blog
    33. extends
    34. DomainObject { private
    35. $name
    36. ;
    37. > $feed;
    38. >=null,
    39. $name
    40. =null ) {  $this->name = $name;
    41.  $this->feed = self::getCollection("\woo\domain\Feed"); 
    42. parent::__construct(
    43. $id
    44. );
    45. }
  37. Funktion addBlog(...){
  38. //Rufen Sie die blogModel-Methode auf, um
  39. 🎜> hinzuzufügen                                                                                    
  40. $this
  41. ->feed = $Feed;                            
  42. ?>
  43. 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
  44. und Datenbanken entsteht.
  45. 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
Vorheriger Artikel:PHP identifiziert Android iOSNächster Artikel:PHP identifiziert Android iOS