Quy định phát triển plugin ứng dụng

Yêu cầu của plugin ứng dụng

  • Plugin không được chứa mã nguồn, biểu tượng, hình ảnh vi phạm bản quyền, v.v.
  • Mã nguồn của plugin phải là mã hoàn chỉnh, và không được mã hóa.
  • Plugin phải có chức năng đầy đủ, không phải là chức năng đơn giản.
  • Phải cung cấp hướng dẫn và tài liệu chức năng đầy đủ.
  • Không nên sử dụng tính năng coroutine trong plugin, vì người dùng có thể không bật coroutine.

Định danh plugin ứng dụng

Mỗi plugin ứng dụng có một định danh duy nhất, định danh này được tạo thành từ các chữ cái. Định danh này ảnh hưởng đến tên thư mục mã nguồn, không gian tên của lớp, và tiền tố bảng trong cơ sở dữ liệu của plugin.

Giả sử nhà phát triển sử dụng foo làm định danh plugin, thì thư mục mã nguồn của plugin sẽ là {dự án chính}/plugin/foo, không gian tên của plugin tương ứng là plugin\foo, và tiền tố bảng là foo_.

Vì định danh là duy nhất trên toàn mạng, nên nhà phát triển cần kiểm tra xem định danh có khả dụng hay không trước khi phát triển, địa chỉ kiểm tra là Kiểm tra định danh ứng dụng.

Cơ sở dữ liệu

  • Tên bảng phải được tạo thành từ các chữ cái thường a-z và dấu gạch dưới _.
  • Bảng dữ liệu của plugin nên có tiền tố là định danh của plugin, ví dụ, bảng article của plugin foo sẽ là foo_article.
  • Khóa chính của bảng nên được chỉ định là id.
  • Công nghệ lưu trữ sẽ đồng bộ sử dụng công nghệ innodb.
  • Bộ ký tự sẽ đồng bộ sử dụng utf8mb4_general_ci.
  • ORM của cơ sở dữ liệu có thể sử dụng laravel hoặc think-orm.
  • Các trường thời gian nên sử dụng DateTime.

Quy tắc mã

Quy tắc PSR

Mã phải tuân thủ quy tắc tải PSR4.

Tên lớp bắt đầu bằng chữ in hoa theo kiểu camel case

<?php

namespace plugin\foo\app\controller;

class ArticleController
{

}

Thuộc tính và phương thức của lớp bắt đầu bằng chữ thường theo kiểu camel case

<?php

namespace plugin\foo\app\controller;

class ArticleController
{
    /**
     * Phương thức không cần xác thực
     * @var array
     */
    protected $noNeedAuth = ['getComments'];

    /**
     * Lấy bình luận
     * @param Request $request
     * @return Response
     * @throws BusinessException
     */
    public function getComments(Request $request): Response
    {

    }
}

Chú thích

Các thuộc tính của lớp và hàm phải có chú thích, bao gồm tổng quan, tham số, loại trả về.

Thụt lề

Mã nên sử dụng 4 dấu cách để thụt lề, không sử dụng tab.

Kiểm soát luồng

Các từ khóa kiểm soát luồng (if, for, while, foreach, v.v.) cần có một khoảng trống theo sau, dấu mở ngoặc nhọn bắt đầu của mã kiểm soát luồng nên nằm trên cùng dòng với dấu ngoặc đóng.

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

}

Tên biến tạm

Nên đặt theo kiểu camel case bắt đầu bằng chữ thường (không bắt buộc).

$articleCount = 100;