アプリケーションプラグイン開発規範
アプリケーションプラグイン要件
- プラグインには著作権侵害のコード、アイコン、画像などを含めてはいけません。
- プラグインのソースコードは完全でなければならず、暗号化されてはいけません。
- プラグインは完全な機能を提供しなければならず、単純な機能であってはいけません。
- 完全な機能紹介とドキュメントを提供しなければなりません。
- プラグイン内でコルーチン機能の使用は推奨されません。ユーザーがコルーチンを有効にしていない可能性があるためです。
アプリケーションプラグイン識別子
各アプリケーションプラグインには、一意の識別子があり、この識別子はアルファベットで構成されています。この識別子は、アプリケーションプラグインのソースコードのディレクトリ名、クラスの名前空間、プラグインデータベーステーブルのプレフィックスに影響します。
開発者が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など)の後にスペースを1つ置き、フロー制御コードの開始波括弧は終了丸括弧と同じ行に配置します。
foreach ($users as $uid => $user) {
}
一時変数名
小文字で始まるキャメルケースの命名を推奨します(必須ではありません)。
$articleCount = 100;