Adlandırma Kuralları
Adlandırma kuralları basit bir amaca hizmet eder: bir isme bakmak, dosyayı açmaya gerek kalmadan arkasındaki şeyin ne olduğunu tahmin etmeye yetsin diye.
1. Modül Machine Name'leri
Bir modülün machine name'i küçük harf, kelimeler alt çizgiyle ayrılmış ve iki kere düşünmeden yazılabilecek kadar kısa olur — bu isim, modülün tanımladığı her procedural fonksiyonun ve hook implementasyonunun prefix'i haline gelir.
product_import
custom_search
weather_apiBir machine name bir kez seçilir ve sonrasında pratikte hiç değişmez, çünkü config'e, hook implementasyonlarına ve veritabanına gömülür — bu yüzden modül ilk oluşturulmadan önce üzerine biraz düşünmeye değer.
2. Class ve Interface İsimleri
Class isimleri StudlyCaps kullanır — her kelime büyük harfle başlar, alt çizgi kullanılmaz. Bir interface, implement ettiği class ile aynı ismi taşır, sonuna Interface eklenir; bir trait Trait ile, bir exception class'ı ise Exception ile biter.
ProductImporter
ProductImporterInterface
ProductImportException
LoggableTrait3. Method ve Fonksiyon İsimleri
Class method'ları lowerCamelCase kullanır. Bağımsız procedural fonksiyonlar — hook'lar dahil — snake_case kullanır ve her zaman modülün machine name'iyle prefix'lenir; bu da iki modülün aynı isimde bir fonksiyon tanımlamasını imkansız hale getirir.
// Class üzerinde bir method: lowerCamelCase.
public function importProducts(): int {}
public function getActiveProducts(): array {}
// Procedural fonksiyon: snake_case, modül adıyla prefix'lenmiş.
function product_import_cron() {}
function product_import_batch_finished($success, $results, $operations) {}4. Sabitler ve Değişkenler
Sabitler — bir class içinde const ile ya da bir dosyanın başında define() ile tanımlansın — UPPER_SNAKE_CASE ile yazılır. Değişkenler ise küçük harfli snake_case kullanır, hiçbir zaman camelCase değil — bu, diğer PHP topluluklarının kurallarından en görünür farklardan biri.
const IMPORT_BATCH_SIZE = 50;
$product_count = 0;
$is_published = TRUE;5. Hook Fonksiyon İsimleri
Bir hook implementasyonu, implement ettiği hook'un adını taşır; hook prefix'inin yerini modülün machine name'i alır: hook_cron(), product_import_cron() olur, hook_form_alter() ise product_import_form_alter() olur. Belirli bir formu hedefleyen _alter hook'larında, hedef form ID'si ortaya eklenir: hook_form_FORM_ID_alter(), product_import_form_node_form_alter() olur.
/**
* Implements hook_cron().
*/
function product_import_cron() {}
/**
* Implements hook_form_FORM_ID_alter() for the node edit form.
*/
function product_import_form_node_form_alter(&$form, FormStateInterface $form_state) {}6. Twig Şablon Dosya İsimleri
Twig şablon dosyaları küçük harf kullanır, kelimeler alt çizgi yerine tire ile ayrılır ve .html.twig ile biter. Belirli bir content type'ı, view mode'u ya da görüntüleme bağlamını hedefleyen daha özel bir şablon, temel şablonun ismine tire ile ayrılmış ek parçalar ekler.
node.html.twig
node--article.html.twig
node--article--teaser.html.twigBu adlandırma kalıbı, Drupal'ın template suggestion (şablon önerisi) sisteminin dayandığı şey — daha özel dosya mevcutsa, hiçbir ekstra kayıt gerekmeden daha genel olana tercih edilir.