ABI Model Pattern هي مكتبة ذات واجهة رسومية مصممة لتهيئة النماذج وخصائص النموذج وأيضًا لتحديد مجموعة من القواعد لكل خاصية. النماذج التي تم إنشاؤها ضرورية لتخزين "هيكل" البيانات ، مما يحد من سلامة وبساطة تغيير شروط التحقق منها. يتم تخزين جميع الإعدادات اللازمة لعمل المكتبة في ملف تكوين منفصل ، يتم استخدام قاعدة البيانات فقط في حالة نماذج الربط لإنشاء نظام إذا لزم الأمر. سيتم وصف وظيفة ربط النموذج بقاعدة البيانات أدناه.
سألوني مرتين: "أخبرني ، سيد باباج ، وإذا أدخلت بيانات خاطئة في الجهاز ، فهل ستحصل على الإجابة الصحيحة؟" عدم فهم الارتباك في الرأس الذي يؤدي إلى مثل هذه الأسئلة.
تشارلز باباج ، "مقتطفات من حياة فيلسوف" (1864)تعد الواجهة الرسومية ضرورية لتسهيل إنشاء النماذج دون دراسة إضافية لمنطق المكتبة ، وكذلك للتحقق من إجراءات المستخدم عند تحديد مجموعة من القواعد لخصائص النموذج ، وتغيير نموذج الإنشاء بشكل ديناميكي وعرض الأخطاء المقابلة. إعدادات المسجل واتصالات قاعدة البيانات.
لإنشاء نموذج في واجهة المكتبة ، من الضروري تحديد خصائصه وشروط التحقق من البيانات لهذه الخصائص. تقارن فئة مكتبة Validator بيانات كل معلمة إدخال بشروط خاصية النموذج المحدد لتكوين الكيان ، وفي حالة عدم التطابق ، تنتهي بخطأ معين.
النموذج المشكل (الكيان) هو كائن له مجموعة محنكة من الخصائص التي تخزن البيانات المرسلة من أجل إنشائه. قد تكون كل خاصية مطلوبة وغير مطلوبة.
- يجب تمرير بيانات الخاصية المطلوبة لتكوين كيان ؛
- تقوم خاصية اختيارية بتخزين البيانات المحددة بشكل افتراضي إذا لم يتم نقل البيانات الخاصة بهذه الخاصية.
نظرًا لأن كل كيان هو مثيل من النوع المقابل ، يمكن استخدام المثيل لعامل التحقق للتحقق من أنه ينتمي إلى النوع المحدد.
كل نموذج تم إنشاؤه هو نوع جديد يمكن استخدامه لإنشاء خصائص النموذج التالية. يمكن استخدام نوع مخصص في كل من نوع الخاصية وفي مجموعة النوع. مثال بسيط هو نموذج القسيمة كنوع من الممتلكات في نموذج الطلب.
نموذج القسيمة:

نموذج الطلب:

يمكن استخدام مجموعة كتابة في حالة وجود عدد غير معروف من العناصر في مصفوفة أو كائن. يجب أن تتوافق بيانات كل عنصر من عناصر بنية البيانات مع شروط النموذج الذي تم إنشاؤه ، والذي يتم استخدامه كنوع الملكية. يمكن اعتبار مثال مجموعة النوع كما يلي:
قد تخزن عربة التسوق كمية غير معروفة من المنتجات. في نموذج "الطلب" ، أضف خاصية "المنتجات" بنوع "Array" ومجموعة "Product". يجب أن يتوافق كل عنصر من عناصر هيكل البيانات هذا مع نوع "المنتج".
نموذج المنتج:

نموذج الطلب:

لربط نموذج بقاعدة بيانات ، من الضروري تعيين علامة "bind_db" لكل خاصية أو خصائص فردية على صفحات إنشاء / تحرير النموذج. يتوافق اسم الجدول مع اسم النموذج وتتوافق أعمدة هذا الجدول مع الخصائص المرتبطة بالنموذج ، بما في ذلك مجموعة القواعد المحددة لها. يتغير هيكل الجداول المرتبطة مع النماذج إذا تم إجراء تغييرات على النموذج.
مثال لنموذج "ترتيب" ذو صلة في قاعدة البيانات
قبل توصيل النموذج وخصائصه بقاعدة البيانات ، تحتاج إلى تكوين الاتصال بقاعدة البيانات في واجهة المكتبة على الصفحة المقابلة.
في الإصدار الحالي من المكتبة ، من الممكن استخدام قاعدة بيانات MySQL ومجموعة محدودة من أنواع MySQL.
تفتقر هذه المكتبة إلى وظائف لكتابة Entity في قاعدة البيانات ، وكذلك حذف السجلات. عند إنشاء مثل هذه الوظيفة المعرفة من قبل المستخدم ، لاحظ أنه عند تغيير خصائص النموذج المرتبطة بقاعدة البيانات ، ستتغير بنية الجدول ، وعندما يتم حذف النموذج ، سيتم حذف الجدول.
لاستخدام المسجل ، يجب تمكينه وتكوينه في صفحة منفصلة لواجهة المكتبة.
إنشاء نماذج لجميع معلمات الوظائف ومجموعات البيانات والاستعلامات واستجابات الاستعلام وغيرها من المعلمات الضرورية للتحقق من صحة البيانات. يعد ذلك ضروريًا لإزالة الأخطاء غير المتوقعة أثناء تنفيذ التطبيق وزيادة التحكم في البيانات لمزيد من المعالجة.
هناك حاجة إلى فئة مكتبة المحلل اللغوي للتكرار عبر معلمات الإدخال في المجموعة التي تم تمريرها لإنشاء كيان. يكرر المحلل اللغوي ويكتشف في المجموعة المنقولة فقط تلك المعلمات الضرورية لإنشاء الكيان. لا يتم تعداد المعلمات بشكل متكرر. مثال على الحصول على البيانات في private24 API وإنشاء نموذج الكيان لـ "ATM".
نموذج الصراف الآلي:

نموذج Atmdevice:
عنوان URL لطلب Private24 API:api.privatbank.ua/p24api/infrastructure؟json&atm&address=&city=٪D0٪96٪D0٪BE٪D0٪BB٪D0٪BA٪D0٪B2٪D0٪B0استجابة Private24 API:رد{ "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" } } ] }
إنشاء الكيان: try {

$atm_devices = $available_atms->devices;

} catch (Exception $e) { $error_message = $e->getMessage(); }
أضف سطرًا لإزالة "الأجهزة" من المتغير $ request_body ، مع بدء إحدى الإجابات المحتملة غير الملائمة:
unset($request_body->devices);
تم تعيين القاعدة "المطلوبة" في خاصية "الأجهزة" لطراز "ATM" الذي تم إنشاؤه مسبقًا. بعد إزالة "الأجهزة" من "$ request_body" ، ننشئ مرة أخرى الكيان ونحصل على الخطأ التالي:

تمت إضافة أحدث الأخطاء المسجلة من قبل فئة المسجل إلى الصفحة المقابلة في الواجهة. يبدو هذا:

تركيب المكتبة
- قم بتنزيل أحدث مكتبة
- قم بفك ضغط الأرشيف الذي تم تنزيله في الدليل حيث تريد تثبيت المكتبة.
- لتثبيت التبعيات لهذه المكتبة ، قم بتشغيل أمر التثبيت من دليل "abi" للمكتبة - "تثبيت الملحن"
- تأكد من تمكين وحدة Apache mod_rewrite وتحقق من تكوين مضيفك الظاهري باستخدام معلمة AllowOverride.
- تحقق ، وإذا لزم الأمر ، قم بتعيين السمات لملف تكوين المكتبة بأذونات القراءة والكتابة (0666).
- بعد تثبيت المكتبة ، استخدم مسؤول اسم المستخدم ومدير كلمة المرور للدخول إلى الواجهة الرسومية للمكتبة.
→
رابط المستودعشكرا جزيلا للمساعدة والدعم من
denaikG