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
eklentisininarticle
tablosufoo_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
veyathink-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;