Uygulama Eklenti Geliştirme Standartları

Uygulama Eklentisi Gereksinimleri

  • Eklentiler, telif hakkı ihlali oluşturan kod, simge, resim vb. içermemelidir.
  • Eklenti kaynak kodu, eksiksiz ve şifrelenmemiş olmalıdır.
  • Eklenti, tamamlayıcı bir işlev olmalı, basit bir işlev olmamalıdır.
  • Tam bir işlev tanıtımı ve belge sağlanmalıdır.
  • Eklentide, kullanıcılar coroutine açık olmayabileceğinden dolayı coroutine işlevi kullanılmaması önerilir.

Uygulama Eklenti Kimliği

Her uygulama eklentisinin benzersiz bir kimliği vardır ve bu kimlik harflerden oluşmaktadır. Bu kimlik, uygulama eklentisinin kaynak kodu dizin adını, sınıf ad alanını ve eklenti veritabanı tablosu ön ekini etkiler.

Geliştirici foo'yu eklenti kimliği olarak alırsa, eklenti kaynak kodunun bulunduğu dizin '{ana proje}/plugin/foo' şeklinde olacaktır, ilgili eklentinin ad alanı plugin\foo, tablo ön eki ise foo_ olacaktır.

Kimliklerin internet üzerinde benzersiz olması nedeniyle, geliştiricilerin geliştirmeden önce kimliğin kullanılabilirliğini kontrol etmesi gerekmektedir. Kontrol adresi Uygulama Kimliği Kontrolü.

Veritabanı

  • Tablo adları küçük harfli a-z ve alt çizgi _ içermelidir.
  • Eklenti veritabanı tabloları, eklenti kimliği ile başlayacak şekilde adlandırılmalıdır; örneğin, foo eklentisinin article tablosu foo_article olacaktır.
  • Tablo anahtarları id olarak indekslenmelidir.
  • Depolama motoru olarak yalnızca innodb kullanılmalıdır.
  • Karakter seti olarak utf8mb4_general_ci kullanılmalıdır.
  • Veritabanı ORM olarak laravel veya think-orm kullanılabilir.
  • Zaman alanları için DateTime kullanılması önerilir.

Kod Standartları

PSR Standartları

Kod, PSR4 yükleme standartlarına uygun olmalıdır.

Sınıf Adlandırması Büyük Harfle Başlayan CamelCase

<?php

namespace plugin\foo\app\controller;

class ArticleController
{

}

Sınıf Özellikleri ve Metotlar Küçük Harfle Başlayan CamelCase

<?php

namespace plugin\foo\app\controller;

class ArticleController
{
    /**
     * Yetki gerektirmeyen metot
     * @var array
     */
    protected $noNeedAuth = ['getComments'];

    /**
     * Yorumları alma
     * @param Request $request
     * @return Response
     * @throws BusinessException
     */
    public function getComments(Request $request): Response
    {

    }
}

Açıklamalar

Sınıf özellikleri ve fonksiyonlar açıklama içermelidir; özet, parametreler ve dönüş türü gibi.

Girinti

Kod, sekme yerine 4 boşluk ile girintilenmelidir.

Akış Kontrolü

Akış kontrol anahtar kelimelerinden (if, for, while, foreach vb.) sonra bir boşluk bırakılmalı ve akış kontrol kodunun başlangıç süslü parantezi, bitiş parantezi ile aynı satıra yerleştirilmelidir.

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

}

Geçici Değişken İsimleri

Küçük harfle başlayan CamelCase olarak adlandırılması önerilir (zorunlu değildir).

$articleCount = 100;