ABI Model Pattern adalah perpustakaan dengan antarmuka grafis yang dirancang untuk menginisialisasi model, properti model, dan juga untuk menetapkan seperangkat aturan untuk setiap properti. Model yang dibuat diperlukan untuk menyimpan "struktur" data, membatasi integritas dan kesederhanaan mengubah kondisi untuk verifikasi mereka. Semua pengaturan yang diperlukan agar perpustakaan berfungsi disimpan dalam file konfigurasi yang terpisah, database hanya digunakan dalam kasus model yang mengikat untuk membuat skema jika perlu. Fungsionalitas untuk menghubungkan model ke database akan dijelaskan di bawah ini.
Mereka bertanya kepada saya dua kali: "Katakan, Tuan Babbage, dan jika Anda memasukkan data yang salah ke dalam mesin, apakah Anda akan mendapatkan jawaban yang benar?" Ketidakpahaman kebingungan di kepala yang mengarah ke pertanyaan seperti itu.
Charles Babbage, "Kutipan dari Kehidupan Seorang Filsuf" (1864)Antarmuka grafis diperlukan untuk kenyamanan membuat model tanpa studi tambahan tentang logika perpustakaan, serta untuk memvalidasi tindakan pengguna ketika mendefinisikan seperangkat aturan untuk properti model, secara dinamis mengubah formulir pembuatan dan menampilkan kesalahan yang sesuai. Pengaturan logger dan koneksi basis data.
Untuk membuat model di antarmuka perpustakaan, perlu untuk menentukan properti dan kondisi verifikasi datanya untuk properti ini. Kelas perpustakaan Validator membandingkan data setiap parameter input dengan kondisi properti model yang ditentukan untuk membentuk Entity, dan jika terjadi ketidakcocokan, berakhir dengan kesalahan tertentu.
Model yang dibentuk (Entity) adalah objek dengan serangkaian properti berpengalaman yang menyimpan data yang dikirim untuk pembuatannya. Setiap properti mungkin diperlukan dan tidak diperlukan.
- Data untuk properti yang diperlukan harus diberikan untuk membentuk entitas;
- Properti opsional menyimpan data yang ditentukan secara default jika data untuk properti ini belum ditransfer.
Karena setiap Entitas adalah instance dari tipe yang sesuai, instance dari operator dapat digunakan untuk memverifikasi bahwa itu milik tipe yang ditentukan.
Setiap model yang dibuat adalah tipe baru yang dapat digunakan untuk membuat properti model berikut. Tipe kustom dapat digunakan baik dalam tipe properti dan dalam koleksi tipe. Contoh sederhana adalah model Kupon sebagai jenis properti dalam model Pesanan.
Model Kupon:

Model pesanan:

Koleksi tipe dapat digunakan dalam kasus jumlah elemen yang tidak diketahui dalam array atau objek. Data dari setiap elemen struktur data tersebut harus sesuai dengan kondisi model yang dibuat, yang digunakan sebagai jenis properti. Contoh koleksi tipe dapat dianggap sebagai berikut:
Keranjang belanja dapat menyimpan jumlah produk yang tidak diketahui. Dalam model "Pesan", tambahkan properti "Produk" dengan jenis "Array" dan koleksi jenis "Produk". Setiap elemen dari struktur data seperti itu harus sesuai dengan tipe "Produk".
Model produk:

Model pesanan:

Untuk mengaitkan model dengan database, perlu untuk mengatur bendera "bind_db" untuk masing-masing atau masing-masing properti pada halaman Buat / Edit model. Nama tabel sesuai dengan nama model dan kolom tabel ini sesuai dengan properti terkait model, termasuk seperangkat aturan yang ditentukan untuk mereka. Struktur tabel tertaut dengan model berubah jika ada perubahan pada model.
Contoh model "Pesanan" terkait dalam database
Sebelum Anda menghubungkan model dan propertinya ke basis data, Anda perlu mengonfigurasi koneksi ke basis data di antarmuka pustaka pada halaman terkait.
Dalam versi perpustakaan saat ini, dimungkinkan untuk hanya menggunakan database MySQL dan sejumlah tipe MySQL terbatas.
Pustaka ini tidak memiliki fungsionalitas untuk menulis Entity ke database, serta menghapus catatan. Saat membuat fungsionalitas yang ditentukan pengguna seperti itu, perhatikan bahwa ketika mengubah properti model yang terkait dengan database, struktur tabel akan berubah, dan ketika model dihapus, tabel akan dihapus.
Untuk menggunakan logger, Anda harus mengaktifkannya dan mengkonfigurasinya di halaman terpisah dari antarmuka perpustakaan.
Buat model untuk semua parameter fungsi, pengumpulan data, kueri, respons kueri, dan parameter lain yang diperlukan untuk validasi data. Ini diperlukan untuk menghilangkan kesalahan tak terduga selama eksekusi aplikasi dan meningkatkan kontrol data untuk diproses lebih lanjut.
Kelas pustaka Parser diperlukan untuk beralih pada parameter input dalam koleksi yang diteruskan untuk membuat Entitas. Parser berulang dan menemukan dalam koleksi yang ditransfer hanya parameter-parameter yang diperlukan untuk membuat Entity. Pencacahan parameter tidak dilakukan secara rekursif. Contoh memperoleh data dalam API private24 dan membuat model Entity "ATM".
Model atm:

Model Atmdevice:
URL permintaan API Private24:api.privatbank.ua/p24api/infrastructure?json&atm&address=&city=%D0%96%D0%BE%D0%BB%D0%BA%D0%B2%D0%B0Respons Private24 API:tanggapan{ "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" } } ] }
Membuat Entitas: try {

$atm_devices = $available_atms->devices;

} catch (Exception $e) { $error_message = $e->getMessage(); }
Tambahkan baris untuk menghapus "perangkat" dari variabel $ request_body, memulai salah satu jawaban yang mungkin tidak pantas:
unset($request_body->devices);
Aturan "wajib" diatur dalam properti "perangkat" dari model "ATM" yang dibuat sebelumnya. Setelah menghapus "perangkat" dari "$ request_body", sekali lagi kami membuat Entity dan kami mendapatkan kesalahan berikut:

Kesalahan log terakhir oleh kelas Logger telah ditambahkan ke halaman yang sesuai di antarmuka. Ini terlihat seperti ini:

Instalasi perpustakaan
- Unduh perpustakaan terbaru
- Buka zip arsip yang diunduh ke direktori tempat Anda ingin menginstal perpustakaan.
- Untuk menginstal dependensi untuk perpustakaan ini, jalankan perintah instalasi dari direktori "abi" perpustakaan - "install komposer"
- Pastikan untuk mengaktifkan modul mod_rewrite Apache dan verifikasi bahwa virtual host Anda dikonfigurasi dengan parameter AllowOverride.
- Periksa dan, jika perlu, atur atribut untuk file konfigurasi pustaka dengan izin baca dan tulis (0666).
- Setelah menginstal perpustakaan, gunakan admin nama pengguna dan admin kata sandi untuk masuk ke antarmuka grafis perpustakaan.
→
Tautan ke repositoriTerima kasih banyak atas bantuan dan dukungan
denaikG