Uygulama Eklentisi Geliştirme Standartları

Uygulama Eklentisi Gereksinimleri

  • Eklentiler telif hakkı ihlali içeren kod, simge veya görüntü içeremez.
  • Eklenti kaynak kodu şifrelenmemiş ve eksiksiz olmalıdır.
  • Eklenti tam işlevsellik sağlamalı, basit bir işlev olmamalıdır.
  • Tam işlevsellik tanıtımı ve belgeler sunulmalıdır.
  • Eklentiler alt pazarı içeremez.
  • Eklenti içinde herhangi bir metin veya tanıtım bağlantısı bulunmamalıdır.

Uygulama Eklentisi Tanımlama

Her uygulama eklentisi benzersiz bir tanımlayıcıya sahiptir, bu tanımlayıcı harflerden oluşur. Bu tanımlayıcı, eklentinin kaynak kodunun bulunduğu dizini, sınıfın ad alanını ve eklenti veritabanı tablo öneki etkiler.

Geliştirici, örneğin foo olarak bir eklenti tanımlayıcısı kullanıyorsa, eklentinin kaynak kodunun bulunduğu dizin {main_project}/plugin/foo olacak, ilgili eklenti sınıfının ad alanı plugin\foo ve tablo öneki foo_ olacaktır.

Tanımlayıcı benzersiz olduğu için, geliştirici geliştirmeye başlamadan önce tanımlayıcının kullanılabilir olup olmadığını kontrol etmelidir. Kontrol adresi Uygulama Tanımlayıcı Kontrolü.

Veritabanı

  • Tablo adları küçük harf a-z ve alt çizgi _ içermelidir.
  • Eklenti veri tabloları, eklenti tanımlayıcı ile öneklenmelidir; örneğin foo eklentisinin makale tablosu foo_article olmalıdır.
  • Tablo anahtarları endeks olarak id olarak belirlenmelidir.
  • Depolama motoru olarak innodb motoru kullanılmalıdır.
  • Karakter seti olarak utf8mb4_general_ci kullanılmalıdır.
  • Veritabanı ORM kullanımı için laravel veya think-orm tercih edilmelidir.
  • Zaman alanlarında DateTime kullanımı tavsiye edilir.

Kod Standartları

PSR Standartları

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

Sınıf Adlandırmaları Büyük Harfle Başlayan CamelCase Olmalıdır

<?php

namespace plugin\foo\app\controller;

class ArticleController
{

}

Sınıfın Özellikleri ve Metodları Küçük Harfle Başlayan CamelCase Olmalıdır

<?php

namespace plugin\foo\app\controller;

class ArticleController
{
    /**
     * Yetkilendirmeye gerek olmayan metodlar
     * @var array
     */
    protected $noNeedAuth = ['getComments'];

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

    }
}

Yorumlar

Sınıfın özellikleri ve fonksiyonları, genel bir açıklama, parametreler ve dönüş türü içeren yorumları içermelidir.

Girintileme

Kodlar, bir tab yerine 4 boşluk kullanılarak girinti yapılmalıdır.

Akış Kontrolü

Akış kontrol anahtar kelimeleri (if for while foreach vb.) ardından bir boşluk bırakılmalı, akış kontrol kodları başlangıç parantezleri bitiş parantezlerinin aynı satırda olacak şekilde olmalıdır.

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

}

Geçici Değişken Adları

Küçük harfle başlayan CamelCase kullanımı önerilir (zorunlu değil)

$articleCount = 100;