มาตรฐานการพัฒนาแอปพลิเคชันปลั๊กอิน

ข้อกำหนดของปลั๊กอินแอปพลิเคชัน

  • ปลั๊กอินต้องไม่รวมโค้ด, ไอคอน, รูปภาพ ฯลฯ ที่ละเมิดลิขสิทธิ์
  • โค้ดแหล่งที่มาของปลั๊กอินต้องเป็นโค้ดที่สมบูรณ์และห้ามเข้ารหัส
  • ปลั๊กอินต้องมีฟังก์ชันการทำงานที่ครบถ้วน ไม่ใช่ฟังก์ชันการทำงานที่ง่ายๆ
  • ต้องมีการนำเสนอฟังก์ชันการทำงานที่สมบูรณ์, เอกสาร
  • ไม่แนะนำให้ใช้ฟังก์ชันการทำงานของ Coroutine ในปลั๊กอิน เนื่องจากผู้ใช้อาจไม่ได้เปิดใช้งาน Coroutine

รหัสประจำปลั๊กอินแอปพลิเคชัน

ปลั๊กอินแอปพลิเคชันแต่ละตัวมีรหัสประจำที่ไม่ซ้ำกัน รหัสนี้ประกอบด้วยตัวอักษร ซึ่งจะมีผลต่อชื่อไดเร็กทอรีโค้ดแหล่งที่มาที่ปลั๊กอินตั้งอยู่, namespaces ของคลาส, และคำนำหน้าตารางในฐานข้อมูลของปลั๊กอิน

สมมุติว่าผู้พัฒนากำหนด foo เป็นรหัสประจำปลั๊กอิน ในกรณีนี้ ไดเร็กทอรีโค้ดแหล่งที่มาจะอยู่ที่ {โครงการหลัก}/plugin/foo namespaces ของปลั๊กอินจะเป็น 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
{

}

ตั้งชื่อลักษณะและวิธีการของคลาสโดยเริ่มต้นด้วยตัวอักษรตัวเล็กตามแบบ Camel Case

<?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) {

}

ชื่อค่าชั่วคราว

แนะนำให้ตั้งชื่อโดยเริ่มต้นด้วยตัวอักษรตัวเล็กแบบ Camel Case (ไม่บังคับ)

$articleCount = 100;