Правила разработки приложений-плагинов

Требования к приложениям-плагинам

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

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

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

Предположим, что разработчик выбрал метку "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\контроллер;

class ArticleController
{

}

Свойства и методы класса должны начинаться с маленькой буквы и быть в стиле "camelCase"

<?php

namespace plugin\foo\app\контроллер;

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;