**أحدث إصدار مستقر: [الإصدار 3.1.0، تم إصداره في 6 يوليو 2017].
يمكن العثور على أحدث إصدار ثابت من الإصدار 2 في فرع v2.
انضم إلينا على Slack على qcubed.slack.com. احصل على دعوتك هنا .
QCubed (تُنطق "Q" - مكعبة) هو إطار عمل لتطوير التطبيقات السريعة لنموذج عرض وحدة التحكم PHP مع دعم PHP5 (5.4 وما فوق) وPHP7. الهدف من إطار العمل هو توفير وقت التطوير للمهام العادية والمتكررة - مما يسمح لك بالتركيز على الأشياء المفيدة والممتعة. يتفوق QCubed في المواقف التي يكون لديك فيها بنية قاعدة بيانات كبيرة تريد إتاحتها للمستخدمين بسرعة.
مع QCubed، لن تضطر إلى التعامل مع POSTs وGETs القادمة من المتصفح. يقوم QCubed بمعالجة ذلك تلقائيًا نيابةً عنك ويجمع المعلومات في نماذج وعناصر تحكم موجهة للكائنات. تشبه البرمجة باستخدام QCubed إلى حد كبير برمجة تطبيقات سطح المكتب. إذا كنت معتادًا على ASP، فهو مشابه.
يقوم Code Generator تلقائيًا بإنشاء فئات الكائنات مع النماذج وعناصر التحكم المطابقة بناءً على مخطط قاعدة البيانات الخاصة بك. يستخدم مفهوم ORM، رسم الخرائط الارتباطية للكائنات، لإنشاء طبقة النموذج بالكامل لك عمليًا.
يمكن لـ Codegen الاستفادة من علاقات المفاتيح الخارجية والقيود الميدانية لإنشاء نماذج بيانات جاهزة للاستخدام كاملة مع إجراءات التحقق من الصحة وطرق CRUD القوية، مما يسمح لك بمعالجة الكائنات بدلاً من إصدار استعلامات SQL باستمرار.
مزيد من المعلومات والأمثلة متاحة على الإنترنت على https://qcubed.eu/
يسمح استخدام QQueries بتحميل النماذج بشكل بسيط ولكنه قوي، وجميع فئات ORM التي تم إنشاؤها لها طرق استعلام وعقد QQ. باستخدام هذه الأساليب، يعد الحصول على مجموعة فرعية معقدة من البيانات أمرًا بسيطًا جدًا - ويمكن استخدامه في أي قاعدة بيانات علائقية تقريبًا.
يستخدم QCubed مفهوم QForm للحفاظ على حالة النموذج بين معاملات POST. يعمل QForm كوحدة تحكم ويمكن أن يحتوي على QControls وهي مكونات واجهة المستخدم.
يمكن لجميع QControls (بما في ذلك QForm نفسه) استخدام قالب يمثل طبقة العرض، لاستكمال بنية MVC.
يمكن لـ QControls الاستفادة من FormState الخاص بـ QForm لتحديث نفسها من خلال عمليات رد اتصال Ajax بنفس سهولة منشورات الخادم المتزامنة. جميع عناصر واجهة المستخدم الأساسية لـ jQuery UI متاحة كـ QControls.
تتضمن بعض QControls ما يلي:
أسهل طريقة لتعلم QCubed هي الاطلاع على الأمثلة التعليمية على http://qcu.be/examples/
من خلال نظام المكونات الإضافية الخاص به، يجعل QCubed من السهل حزم وتقديم التحسينات والإضافات إلى قاعدة التعليمات البرمجية الأساسية. توجد المكونات الإضافية للإصدار النشط حاليًا من QCubed في المستودعات التي تبدأ بـ plugin .
يتم وصف إجراء التثبيت بالتفصيل هنا: تعليمات التثبيت.
كان الإصدار 3.0 بمثابة تغيير معماري كبير عن الإصدار 2.x. يجب عليك البدء من جديد من خلال إنشاء مشروع جديد، وإنشاء النماذج الخاصة بك، واستخدام ModelConnectorEditor لتحسين ما تم إنشاؤه في الموصلات (التي كانت تسمى MetaControls)، ثم نسخ التعليمات البرمجية من الإصدار القديم إلى الإصدار الجديد. ستجد أن العديد من الأشياء التي كان عليك القيام بها يدويًا أصبحت الآن تتم في تعليمات برمجية تم إنشاؤها، لذلك قد لا يستغرق الأمر وقتًا طويلاً كما تعتقد. لنقفز :-)
v3.1 الآن لديه تتبع التغيير في النماذج. بدلاً من دفع كائن بأكمله إلى قاعدة البيانات في كل مرة تقوم فيها بحفظ كائن، فإنه يدفع فقط البيانات التي تغيرت. للقيام بذلك، فإنه يجعل متغيرات الأعضاء في الفئة الفائقة للنموذج الذي تم إنشاؤه خاصة بدلاً من أن تكون محمية، مما قد يتطلب منك تغيير التعليمات البرمجية في الفئة الفرعية للنموذج الخاص بك. للمساعدة في عملية النقل، يتم إيقاف تشغيل ميزة المتغير الخاص الجديد بشكل افتراضي. ستحتاج إلى تشغيله عن طريق تحرير ملف codegen_settings.xml وإضافة المعلمة "privateColumnVars = "true"" إلى علامة createOptions. راجع ملف codegen_settings.xml في دليل qcubed/install/project/configuration للحصول على مثال.
سيؤدي هذا إلى جعل كافة متغيرات الأعمدة المحمية الموجودة في فئة Gen خاصة، لذلك لن تتمكن من الوصول إليها مباشرة من فئات النموذج الفرعية الخاصة بك. على سبيل المثال، إذا كان لديك عمود "الاسم" في الجدول، فيمكنك القيام بما يلي:
$ strName = $ this -> Name ;
أو الأفضل من ذلك:
$ strName = $ this -> getName ();
ولكن ليس:
$ strName = $ this -> strName ;
$this->Name
يوجه إلى $this->getName()
وبدلا من هذا أيضا:
$ this -> strName = $ strName ;
يفعل:
$ this -> setName ( $ strName );
أو
$ this -> Name = $ strName ;
تتضمن فوائد الميزة الجديدة أداء أفضل، وتقليل استثناءات OptimisticLocking، ومنعك من الوصول عن طريق الخطأ إلى قيمة لم يتم تحميلها بسبب عبارة QSelect. كما يمكن الآن استخدام QSelect للتحكم في ما يتم إنشاؤه عند تحويل كائن إلى تنسيقات أخرى مثل JSON.
يعد الإصدار 4.0 تغييرًا معماريًا رئيسيًا آخر، وهو مصمم لدعم معايير PSR-1 وPSR-2 وPSR-4. يضيف الإصدار 4 مساحات أسماء لجميع الملفات الأساسية وملفات المكتبة. لقد اختفى الحرف "Q" من أمام جميع الفئات الأساسية، نظرًا لأن ذلك كان في الأساس طريقتنا في تنفيذ مساحات الأسماء قبل توفر مساحات الأسماء في PHP.
يتضمن أدوات للمساعدة في أتمتة تغيير التعليمات البرمجية الخاصة بك من كود v3.x إلى v4.0. راجع الملف التمهيدي في مستودع qcubed/application لمزيد من المعلومات.
قائمة بأحدث التغييرات متاحة على https://github.com/qcubed/qcubed/commits/master
تم تفرع QCubed من QCodo، وهو مشروع قام به مايكل هو. يعتمد QCubed على JQuery ويستخدم مكتبات jQuery UI لبعض عناصر التحكم الأساسية الخاصة به.