Especificaciones para el desarrollo de plugins de aplicación

Requisitos para los plugins de aplicación

  • El plugin no puede contener código, iconos, imágenes, etc., que infrinjan derechos de autor.
  • El código fuente del plugin debe ser completo y no puede estar encriptado.
  • El plugin debe ofrecer una funcionalidad completa, no puede ser una funcionalidad simple.
  • Se debe proporcionar una descripción completa de las funciones y documentación.
  • Se desaconseja el uso de la funcionalidad de corutinas dentro del plugin, ya que los usuarios pueden no tener activadas las corutinas.

Identificación del plugin de aplicación

Cada plugin de aplicación tiene una identificación única, compuesta por letras. Esta identificación afecta el nombre del directorio de código fuente del plugin, el espacio de nombres de la clase y el prefijo de la tabla de base de datos del plugin.

Supongamos que el desarrollador utiliza foo como identificación del plugin, entonces el directorio de código fuente del plugin será {proyecto_principal}/plugin/foo, el espacio de nombres correspondiente será plugin\foo y el prefijo de la tabla será foo_.

Dado que la identificación es única en toda la red, el desarrollador debe verificar la disponibilidad de la identificación antes de desarrollar, la dirección para la verificación es Verificación de identificación de aplicación.

Base de datos

  • El nombre de la tabla debe estar compuesto por letras minúsculas a-z y guiones bajos _.
  • Las tablas de datos del plugin deben tener como prefijo la identificación del plugin, por ejemplo, la tabla article del plugin foo sería foo_article.
  • La clave principal de la tabla debe ser un índice llamado id.
  • El motor de almacenamiento debe utilizarse uniformemente como motor innodb.
  • El conjunto de caracteres debe utilizarse uniformemente como utf8mb4_general_ci.
  • Se puede usar ORM de base de datos como laravel o think-orm.
  • Se sugiere usar el tipo DateTime para los campos de tiempo.

Normas de código

Normativa PSR

El código debe cumplir con la norma de carga PSR4.

El nombre de la clase utiliza la convención de PascalCase (mayúscula al inicio)

<?php

namespace plugin\foo\app\controller;

class ArticleController
{

}

Los atributos y métodos de la clase utilizan la convención camelCase (minúscula al inicio)

<?php

namespace plugin\foo\app\controller;

class ArticleController
{
    /**
     * Métodos que no requieren autenticación
     * @var array
     */
    protected $noNeedAuth = ['getComments'];

    /**
     * Obtener comentarios
     * @param Request $request
     * @return Response
     * @throws BusinessException
     */
    public function getComments(Request $request): Response
    {

    }
}

Comentarios

Los atributos de la clase y las funciones deben incluir comentarios, que abarquen una descripción general, parámetros y tipo de retorno.

Sangrado

El código debe utilizar 4 espacios en blanco para el sangrado, en vez de usar tabuladores.

Control de flujo

Las palabras clave de control de flujo (if, for, while, foreach, etc.) deben ir seguidas de un espacio en blanco, y la llave de apertura del bloque de código de control de flujo debe estar en la misma línea que el paréntesis de cierre.

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

}

Nombres de variables temporales

Se sugiere utilizar la convención camelCase (en minúscula al inicio) para los nombres (no es obligatorio).

$articleCount = 100;