Стандарты разработки приложений и плагинов
Требования к приложению и плагину
- Плагины не должны содержать код, иконки, изображения и т. д., нарушающие авторские права.
- Исходный код плагина должен быть полным и не должен быть зашифрован.
- Плагин должен реализовывать полноценный функционал, а не простые функции.
- Должно быть предоставлено полное описание функционала и документация.
- Не рекомендуется использовать функции корутин в плагине, так как пользователи могут не включать корутины.
Идентификация приложения и плагина
Каждый плагин имеет уникальный идентификатор, состоящий из букв. Этот идентификатор влияет на имя каталога исходного кода плагина, пространство имен класса и префикс таблиц базы данных плагина.
Предположим, что разработчик использует 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;