معايير تطوير المكونات الإضافية للتطبيقات

متطلبات المكونات الإضافية

  • يجب ألا تحتوي المكونات الإضافية على أكواد أو أيقونات أو صور تنتهك حقوق النشر.
  • يجب أن يكون مصدر المكون الإضافي هو كود كامل، ولا يجب أن يكون مشفراً.
  • يجب أن يكون المكون الإضافي وظيفة كاملة، وليس وظيفة بسيطة.
  • يجب تقديم وصف كامل للوظيفة، بالإضافة إلى الوثائق.
  • لا يُستحسن استخدام ميزات التعاون في المكون الإضافي، حيث قد لا يكون المستخدمون قد قاموا بتمكين التعاون.

تعريف المكون الإضافي للتطبيق

كل مكون إضافي للتطبيق له تعريف فريد، يتكون هذا التعريف من أحرف. يؤثر هذا التعريف على اسم دليل المصدر الذي يحتوي المكون الإضافي، وفضاء الأسماء للفئة، والبادئة لجدول قاعدة بيانات المكون الإضافي.

افترض أن المطور اختار foo كتعريف لمكون الإضافي، سيكون دليل مصدر المكون الإضافي هو {المشروع الرئيسي}/plugin/foo، وفضاء الأسماء المخصص للمكون الإضافي هو plugin\foo، وستكون بادئة الجدول foo_.

بما أن التعريف فريد عبر الإنترنت، يجب على المطور التحقق من توفر التعريف قبل بدء التطوير، يمكنك التحويل إلى فحص التعريفات التطبيقية.

قاعدة البيانات

  • يجب أن تتكون أسماء الجداول من أحرف صغيرة a-z وشرطات سفلية _.
  • يجب أن تبدأ جداول بيانات المكونات الإضافية ببادئة تعريف المكون الإضافي، على سبيل المثال. جدول المقالات لمكون foo سيكون foo_article.
  • يجب أن يكون المفتاح الأساسي للجدول هو id كمؤشر.
  • يجب استخدام محرك تخزين موحد وهو InnoDB.
  • يجب استخدام مجموعة أحرف موحدة وهي utf8mb4_general_ci.
  • يُمكن استخدام ORM لقاعدة البيانات إما Laravel أو Think-ORM.
  • يُفضل استخدام حقل الزمن كـ DateTime.

معايير الكود

معايير PSR

يجب أن يتوافق الكود مع معيار التحميل PSR4.

يجب أن تبدأ أسماء الفئات بحرف كبير وتكون بصيغة جمل كامبيل

<?php

namespace plugin\foo\app\controller;

class ArticleController
{

}

يجب أن تبدأ خصائص الفئة والطرق بحرف صغير بصيغة جمل كامبيل

<?php

namespace plugin\foo\app\controller;

class ArticleController
{
    /**
     * طرق لا تحتاج إلى مصادقة
     * @var array
     */
    protected $noNeedAuth = ['getComments'];

    /**
     * الحصول على التعليقات
     * @param Request $request
     * @return Response
     * @throws BusinessException
     */
    public function getComments(Request $request): Response
    {

    }
}

التعليقات

يجب أن تحتوي خصائص الفئات والوظائف على تعليقات، بما في ذلك الوصف والمعلمات ونوع الإرجاع.

التراجع

يجب استخدام 4 مسافات للتراجع، بدلاً من استخدام علامة الجدولة.

التحكم في التدفق

يجب أن يتبع الكلمة الرئيسية للتحكم في التدفق (if, for, while, foreach، إلخ) فراغ واحد، يجب أن تكون الأقواس المفتوحة لشفرة التحكم في التدفق في نفس السطر مع القوس المغلق.

foreach ($users as $uid => $user) {

}

أسماء المتغيرات المؤقتة

يُفضل تسميتها بصيغة جمل كامبيل بحرف صغير في البداية (ليس إلزامياً).

$articleCount = 100;