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