Стандарты разработки приложений и плагинов

Требования к приложению и плагину

  • Плагины не должны содержать код, иконки, изображения и т. д., нарушающие авторские права.
  • Исходный код плагина должен быть полным и не должен быть зашифрован.
  • Плагин должен реализовывать полноценный функционал, а не простые функции.
  • Должно быть предоставлено полное описание функционала и документация.
  • Не рекомендуется использовать функции корутин в плагине, так как пользователи могут не включать корутины.

Идентификация приложения и плагина

Каждый плагин имеет уникальный идентификатор, состоящий из букв. Этот идентификатор влияет на имя каталога исходного кода плагина, пространство имен класса и префикс таблиц базы данных плагина.

Предположим, что разработчик использует foo в качестве идентификатора плагина, тогда каталог исходного кода плагина будет /{основной_проект}/plugin/foo, соответствующее пространство имен плагина будет plugin\foo, а префикс таблицы будет foo_.

Поскольку идентификатор уникален в сети, разработчик должен проверить доступность идентификатора перед началом разработки. Адрес для проверки: Проверка приложения по идентификатору.

База данных

  • Названия таблиц должны состоять из строчных букв a-z и символа подчеркивания _.
  • Таблицы данных плагина должны начинаться с идентификатора плагина, например, таблица article для плагина foo будет называться foo_article.
  • Основной ключ таблицы должен быть индексом с именем id.
  • Единый движок хранения данных — innodb.
  • Унифицированный набор символов — utf8mb4_general_ci.
  • Можно использовать ORM базы данных laravel или think-orm.
  • Для временных полей рекомендуется использовать DateTime.

Стандарты кода

Стандарты PSR

Код должен соответствовать стандарту загрузки PSR4.

Названия классов начинаются с заглавной буквы и используют стиль CamelCase

<?php

namespace plugin\foo\app\controller;

class ArticleController
{

}

Свойства и методы класса начинаются со строчной буквы в стиле CamelCase

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

}

Имена временных переменных

Рекомендуется использовать стиль CamelCase, начинающийся с маленькой буквы (не обязательно).

$articleCount = 100;