Especificações para Desenvolvimento de Plugins de Aplicativo

Requisitos para Plugins de Aplicativo

  • O plugin não pode conter código, ícones, imagens etc. que infrinjam direitos autorais.
  • O código fonte do plugin deve ser completo e não pode ser criptografado.
  • O plugin deve oferecer funcionalidades completas, e não apenas funcionalidades simples.
  • Deve fornecer uma introdução completa sobre as funcionalidades e a documentação.
  • O uso de funcionalidades de corrotina no plugin não é recomendado, pois o usuário pode não ter ativado corrotinas.

Identificação de Plugins de Aplicativo

Cada plugin de aplicativo tem uma identificação única, que é composta por letras. Esta identificação influencia o nome do diretório de código fonte do plugin, o namespace da classe e o prefixo da tabela do banco de dados do plugin.

Supondo que o desenvolvedor utilize foo como identificação do plugin, o diretório onde o código fonte do plugin está localizado será {projeto_principal}/plugin/foo, o namespace correspondente do plugin será plugin\foo e o prefixo da tabela será foo_.

Como a identificação deve ser única na rede, o desenvolvedor precisa verificar se a identificação está disponível antes de começar o desenvolvimento. O endereço para a verificação é Verificação de Identificação da Aplicação.

Banco de Dados

  • Os nomes das tabelas devem consistir em letras minúsculas a-z e sublinhados _.
  • As tabelas de dados do plugin devem ter o prefixo da identificação do plugin, por exemplo, a tabela article do plugin foo será foo_article.
  • A chave primária da tabela deve ser id como índice.
  • O mecanismo de armazenamento deve usar uniformemente o mecanismo InnoDB.
  • O conjunto de caracteres deve usar uniformemente utf8mb4_general_ci.
  • ORM do banco de dados pode usar Laravel ou Think-ORM.
  • Campos de tempo devem usar preferencialmente DateTime.

Normas de Código

Normas PSR

O código deve estar em conformidade com a norma de carregamento PSR4.

Nomenclatura das Classes em CamelCase

<?php

namespace plugin\foo\app\controller;

class ArticleController
{

}

Atributos e Métodos da Classe em camelCase

<?php

namespace plugin\foo\app\controller;

class ArticleController
{
    /**
     * Métodos que não precisam de autenticação
     * @var array
     */
    protected $noNeedAuth = ['getComments'];

    /**
     * Obtém comentários
     * @param Request $request
     * @return Response
     * @throws BusinessException
     */
    public function getComments(Request $request): Response
    {

    }
}

Comentários

Os atributos e funções da classe devem incluir comentários, incluindo uma visão geral, parâmetros e tipo de retorno.

Indentação

O código deve utilizar 4 espaços para indentação, em vez de usar tabulações.

Controle de Fluxo

As palavras-chave de controle de fluxo (if, for, while, foreach, etc.) devem ser seguidas por um espaço, e a chave de abertura do código de controle de fluxo deve estar na mesma linha que o parêntese de fechamento.

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

}

Nomes de Variáveis Temporárias

Recomenda-se nomear em camelCase, começando com letra minúscula (não é obrigatório).

$articleCount = 100;