มาตรฐานการพัฒนาแอปพลิเคชันปลั๊กอิน
ข้อกำหนดของปลั๊กอินแอปพลิเคชัน
- ปลั๊กอินต้องไม่รวมโค้ด, ไอคอน, รูปภาพ ฯลฯ ที่ละเมิดลิขสิทธิ์
- โค้ดแหล่งที่มาของปลั๊กอินต้องเป็นโค้ดที่สมบูรณ์และห้ามเข้ารหัส
- ปลั๊กอินต้องมีฟังก์ชันการทำงานที่ครบถ้วน ไม่ใช่ฟังก์ชันการทำงานที่ง่ายๆ
- ต้องมีการนำเสนอฟังก์ชันการทำงานที่สมบูรณ์, เอกสาร
- ไม่แนะนำให้ใช้ฟังก์ชันการทำงานของ 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;