애플리케이션 플러그인 개발 규범

애플리케이션 플러그인 요구 사항

  • 플러그인은 저작권이 있는 코드, 아이콘, 이미지 등을 포함할 수 없습니다.
  • 플러그인 소스 코드는 완전한 코드이어야 하며, 암호화할 수 없습니다.
  • 플러그인은 완전한 기능이어야 하며, 단순한 기능일 수 없습니다.
  • 전체 기능 소개 및 문서를 제공해야 합니다.
  • 플러그인 내에서는 사용자에게 코루틴이 활성화되어 있지 않을 수 있으므로 코루틴 기능 사용을 권장하지 않습니다.

애플리케이션 플러그인 식별자

각 애플리케이션 플러그인은 고유 식별자를 가지며, 이 식별자는 문자로 구성됩니다. 이 식별자는 애플리케이션 플러그인이 위치한 소스 코드 디렉터리 이름, 클래스의 네임스페이스, 플러그인 데이터베이스 테이블 접두어에 영향을 미칩니다.

개발자가 foo를 플러그인 식별자로 사용할 경우, 플러그인 소스 코드가 위치한 디렉터리는 {주 프로젝트}/plugin/foo가 되며, 해당 플러그인의 네임스페이스는 plugin\foo가 되고, 테이블 접두어는 foo_가 됩니다.

식별자는 전 세계에서 유일하므로, 개발자는 개발 전에 식별자가 사용 가능한지 확인해야 하며, 확인 주소는 애플리케이션 식별자 확인입니다.

데이터베이스

  • 테이블 이름은 소문자 a-z 및 밑줄 _로 구성되어야 합니다.
  • 플러그인 데이터 테이블은 플러그인 식별자를 접두어로 사용해야 하며, 예를 들어 foo 플러그인의 article 테이블은 foo_article입니다.
  • 테이블의 기본 키는 id로 인덱스를 설정해야 합니다.
  • 스토리지 엔진은 일관되게 innodb 엔진을 사용해야 합니다.
  • 문자 집합은 일관되게 utf8mb4_general_ci를 사용해야 합니다.
  • 데이터베이스 ORM은 laravel 또는 think-orm을 사용할 수 있습니다.
  • 시간 필드는 DateTime을 사용하는 것이 좋습니다.

코드 규범

PSR 규범

코드는 PSR4 로딩 규범을 충족해야 합니다.

클래스 이름은 대문자로 시작하는 카멜 표기법

<?php

namespace plugin\foo\app\controller;

class ArticleController
{

}

클래스의 속성과 메서드는 소문자로 시작하는 카멜 표기법

<?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) {

}

임시 변수명

소문자로 시작하는 카멜 표기법을 사용하는 것이 좋습니다(강제는 아님).

$articleCount = 100;