ABI Model Pattern ist eine Bibliothek mit einer grafischen Oberfläche, mit der Modelle und Modelleigenschaften initialisiert und für jede Eigenschaft eine Reihe von Regeln definiert werden können. Die erstellten Modelle sind erforderlich, um die „Struktur“ der Daten zu speichern und die Integrität und Einfachheit der Änderung der Bedingungen für ihre Überprüfung einzuschränken. Alle Einstellungen, die für das Funktionieren der Bibliothek erforderlich sind, werden in einer separaten Konfigurationsdatei gespeichert. Die Datenbank wird nur bei Bindungsmodellen verwendet, um bei Bedarf ein Schema zu erstellen. Die Funktionalität zum Verknüpfen des Modells mit der Datenbank wird nachfolgend beschrieben.
Sie fragten mich zweimal: "Sagen Sie mir, Mr. Babbage, und wenn Sie die falschen Daten in die Maschine eingeben, erhalten Sie dann die richtige Antwort?" Die Unverständlichkeit der Verwirrung im Kopf, die zu solchen Fragen führt.
Charles Babbage, "Auszüge aus dem Leben eines Philosophen" (1864)Eine grafische Oberfläche ist erforderlich, um Modelle ohne zusätzliche Untersuchung der Logik der Bibliothek erstellen zu können und um Benutzeraktionen beim Definieren eines Regelsatzes für Modelleigenschaften, beim dynamischen Ändern des Erstellungsformulars und beim Anzeigen der entsprechenden Fehler zu validieren. Logger-Einstellungen und Datenbankverbindungen.
Um ein Modell in der Bibliotheksschnittstelle zu erstellen, müssen seine Eigenschaften und Datenüberprüfungsbedingungen für diese Eigenschaften ermittelt werden. Die Validator-Bibliotheksklasse vergleicht die Daten jedes Eingabeparameters mit den Bedingungen der Eigenschaft des angegebenen Modells, um die Entität zu bilden, und wird im Falle einer Nichtübereinstimmung mit einem bestimmten Fehler beendet.
Ein geformtes Modell (Entity) ist ein Objekt mit einem erfahrenen Satz von Eigenschaften, in dem die für seine Erstellung übertragenen Daten gespeichert werden. Jede Eigenschaft kann erforderlich und nicht erforderlich sein.
- Daten für eine erforderliche Eigenschaft müssen übergeben werden, um eine Entität zu bilden.
- In einer optionalen Eigenschaft werden standardmäßig angegebene Daten gespeichert, wenn keine Daten für diese Eigenschaft übertragen wurden.
Da jede Entität eine Instanz des entsprechenden Typs ist, kann der Operator instanceof verwendet werden, um zu überprüfen, ob sie zum angegebenen Typ gehört.
Jedes erstellte Modell ist ein neuer Typ, mit dem die folgenden Modelleigenschaften erstellt werden können. Ein benutzerdefinierter Typ kann sowohl in einem Eigenschaftstyp als auch in einer Typensammlung verwendet werden. Ein einfaches Beispiel ist das Coupon-Modell als eine Art von Eigenschaft im Order-Modell.
Gutscheinmodell:

Bestellmodell:

Eine Typensammlung kann bei einer unbekannten Anzahl von Elementen in einem Array oder Objekt verwendet werden. Die Daten jedes Elements einer solchen Datenstruktur müssen den Bedingungen des erstellten Modells entsprechen, das als Eigenschaftstyp verwendet wird. Ein Beispiel für eine Typensammlung kann wie folgt betrachtet werden:
In einem Warenkorb kann eine unbekannte Menge von Produkten gespeichert sein. Fügen Sie im Modell "Bestellung" die Eigenschaft "Produkte" mit dem Typ "Array" und der Sammlung des Typs "Produkt" hinzu. Jedes Element einer solchen Datenstruktur muss einem Produkttyp entsprechen.
Produktmodell:

Bestellmodell:

Um ein Modell einer Datenbank zuzuordnen, muss das Flag "bind_db" für jede oder einzelne Eigenschaften auf den Seiten "Erstellen / Bearbeiten" des Modells gesetzt werden. Der Name der Tabelle entspricht dem Namen des Modells, und die Spalten dieser Tabelle entsprechen den zugehörigen Eigenschaften des Modells, einschließlich der für sie angegebenen Regeln. Die Struktur verknüpfter Tabellen mit Modellen ändert sich, wenn Änderungen am Modell vorgenommen werden.
Ein Beispiel für ein verwandtes Bestellmodell in der Datenbank
Bevor Sie das Modell und seine Eigenschaften mit der Datenbank verbinden, müssen Sie die Verbindung zur Datenbank in der Bibliotheksschnittstelle auf der entsprechenden Seite konfigurieren.
In der aktuellen Version der Bibliothek können nur eine MySQL-Datenbank und eine begrenzte Anzahl von MySQL-Typen verwendet werden.
Dieser Bibliothek fehlen Funktionen zum Schreiben von Entitäten in die Datenbank sowie zum Löschen von Datensätzen. Beachten Sie beim Erstellen solcher benutzerdefinierten Funktionen, dass sich beim Ändern der der Datenbank zugeordneten Modelleigenschaften die Tabellenstruktur ändert und beim Löschen des Modells die Tabelle gelöscht wird.
Um den Logger zu verwenden, müssen Sie ihn aktivieren und auf einer separaten Seite der Bibliotheksschnittstelle konfigurieren.
Erstellen Sie Modelle für alle Funktionsparameter, Datensammlungen, Abfragen, Abfrageantworten und andere erforderliche Parameter für die Datenvalidierung. Dies ist erforderlich, um unerwartete Fehler während der Anwendungsausführung zu beseitigen und die Datenkontrolle für die weitere Verarbeitung zu verbessern.
Die Parser-Bibliotheksklasse wird benötigt, um die Eingabeparameter in der übergebenen Auflistung zu durchlaufen und eine Entität zu erstellen. Der Parser iteriert und findet in der übertragenen Sammlung nur die Parameter, die zum Erstellen der Entität erforderlich sind. Die Aufzählung von Parametern wird nicht rekursiv durchgeführt. Ein Beispiel für das Abrufen von Daten in der private24-API und das Erstellen des Entitätsmodells von „ATM“.
Atm-Modell:

Atmdevice-Modell:
Private24 API-Anforderungs-URL:api.privatbank.ua/p24api/infrastructure?json&atm&address=&city=%D0%96%D0%BE%D0%BB%D0%BA%D0%B2%D0%B0Private24 API-Antwort:Antwort{ "city":"", "address":"", "devices":[ { "type":"ATM", "cityRU":"", "cityUA":"", "cityEN":"Zhovkva", "fullAddressRu":", , , , , 1", "fullAddressUa":"i, i, i,i , i, 1", "fullAddressEn":"Ukraine,area Lvivska,district Zhovkivskyi,city Zhovkva,building 1", "placeRu":" \"\"", "placeUa":"i \"\"", "latitude":"50.056405", "longitude":"23.972725", "tw":{ "mon":"09:00 - 18:00", "tue":"09:00 - 18:00", "wed":"09:00 - 18:00", "thu":"09:00 - 18:00", "fri":"09:00 - 18:00", "sat":"09:00 - 16:00", "sun":"00:00 - 00:00", "hol":"00:00 - 00:00" } }, { "type":"ATM", "cityRU":"", "cityUA":"", "cityEN":"Zhovkva", "fullAddressRu":", , , , , 33", "fullAddressUa":"i, i, i,i , i, 33", "fullAddressEn":"Ukraine,area Lvivska,district Zhovkivskyi,city Zhovkva,building 33", "placeRu":" \"\"", "placeUa":" \"i\"", "latitude":"50.055840", "longitude":"23.981580", "tw":{ "mon":"09:00 - 18:00", "tue":"09:00 - 18:00", "wed":"09:00 - 18:00", "thu":"09:00 - 18:00", "fri":"09:00 - 18:00", "sat":"09:00 - 16:00", "sun":"00:00 - 00:00", "hol":"00:00 - 00:00" } } ] }
Entität erstellen: try {

$atm_devices = $available_atms->devices;

} catch (Exception $e) { $error_message = $e->getMessage(); }
Fügen Sie eine Zeile hinzu, um "Geräte" aus der Variablen $ request_body zu entfernen und eine der möglichen unangemessenen Antworten auszulösen:
unset($request_body->devices);
Die "erforderliche" Regel wurde in der Eigenschaft "Geräte" des zuvor erstellten "ATM" -Modells festgelegt. Nachdem wir "Geräte" aus "$ request_body" entfernt haben, erstellen wir erneut eine Entität und erhalten den folgenden Fehler:

Die letzten protokollierten Fehler der Logger-Klasse wurden der entsprechenden Seite in der Benutzeroberfläche hinzugefügt. Es sieht so aus:

Bibliotheksinstallation
- Laden Sie die neueste Bibliothek herunter
- Entpacken Sie das heruntergeladene Archiv in das Verzeichnis, in dem Sie die Bibliothek installieren möchten.
- Um Abhängigkeiten für diese Bibliothek zu installieren, führen Sie den Installationsbefehl aus dem Verzeichnis "abi" der Bibliothek aus - "composer install".
- Stellen Sie sicher, dass das Apache mod_rewrite-Modul aktiviert ist und dass Ihr virtueller Host mit dem AllowOverride-Parameter konfiguriert ist.
- Überprüfen Sie die Attribute für die Bibliothekskonfigurationsdatei mit Lese- und Schreibberechtigungen (0666) und legen Sie sie gegebenenfalls fest.
- Verwenden Sie nach der Installation der Bibliothek den Benutzernamen admin und das Kennwort admin, um die grafische Oberfläche der Bibliothek aufzurufen.
→
Link zum RepositoryVielen Dank für die Hilfe und Unterstützung von
denaikG