アプリケーションプラグイン開発規範

アプリケーションプラグインの要件

  • プラグインには侵害行為のコード、アイコン、画像などを含めてはならない
  • プラグインのソースコードは完全であり、暗号化されてはならない
  • プラグインは完全な機能を持っている必要があり、単純な機能であってはならない
  • 完全な機能紹介とドキュメントを提供する必要がある
  • プラグインにはサブマーケットを含めてはならない
  • プラグイン内にはテキストやプロモーションリンクを含めてはならない

アプリケーションプラグインの識別子

それぞれのアプリケーションプラグインには一意の識別子があります。この識別子はアルファベットで構成されます。この識別子はアプリケーションプラグインのソースコードディレクトリ名、クラスの名前空間、プラグインのデータベーステーブルの接頭辞に影響を及ぼします。

例えば、開発者がプラグインの識別子として"foo"を使用する場合、プラグインのソースコードは{主プロジェクト}/plugin/fooにあり、対応するプラグインの名前空間はplugin\fooであり、テーブルの接頭辞はfoo_となります。

識別子は全体で一意であるため、開発者は開発を始める前に使用可能な識別子を確認する必要があります。確認するためのURLはアプリケーション識別子チェックです。

データベース

  • テーブル名は小文字のアルファベットa-zおよびアンダースコア_で構成される
  • プラグインのデータテーブルはプラグインの識別子で前置きされるべきであり、例えば"foo"プラグインの記事テーブルは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など)の後にはスペースを1つ入れ、制御フローコードの始まりの波括弧は終了の括弧と同じ行に配置すべきです。

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

}

一時変数名

小文字で始まるキャメルケースを使用することが望ましい(強制ではない)

$articleCount = 100;