Drupal modül veya tema geliştirirken dikkat etmeniz ve uymanız gereken bazı Drupal kodlama standartları vardır. Burada anlatılan kodlama standartları Drupal versiyon bağımsız olup tüm Drupal versiyonları için her zaman geçelidir. Geliştirdiğiniz Drupal modül ve temaların Drupal kodlama standartlarına uygun olması tavsiye edilmektedir. Daha önce yazdığınız Drupal kodlarını standartlara uygun hale getirebilirsiniz ama bu bir zorunluluk değil, eski kodlarınız aynı şekilde de kalabilir. Özellikle büyük Drupal projelerine (Drupal çekirdeği gibi) ait kodları tekrar elden geçirmek ve güncel standartlara uygun hale getirmek epey zahmetli olabilir. Siz her durumda yeni yazdığınız kodların standartlara uygunluğuna özen gösterin.

Drupal kodlama standartlarını aşağıdaki başlıklar altında detaylandırabiliriz;

  • Girinti ve boşluklar (Indenting and Whitespace)
  • Operatörler (Operators)
  • Dönüşümler (Casting)
  • Kontrol Yapıları (Control Structures)
  • Satır uzunlukları ve taşmaları (Line length and wrapping)
  • Fonksiyon çağrıları (Function Calls)
  • Fonksiyon tanımları (Function Declarations)
  • Sınıf tanımlamaları (Class Constructor Calls)
  • Diziler (Arrays)
  • Alıntılar (Quotes)
  • Metin bağlantıları (String Concatenations)
  • Yorumlar (Comments)
  • Kod dahil etme (Including Code)
  • PHP kod etiketleri (PHP Code Tags)
  • Noktalıvirgül kullanımı (Semicolons)
  • İsimlendirme standartları (Naming Conventions)

Girinti ve Boşlukları

Klavyedeki tab tuşunu kullanmayın, onun yerine 2 boşluk (space) karakteri kullanın. Satır sonlarında fazladan boşluk bulundurmayın, satır en son kod ile bitmeli. Bazı durumlarda satır sonlarında fark edemediğimiz beyaz boşlukları olabiliyor.  Ayrıca satır sonları linux satır sonu karakteri \n ile bitmeli, windows satır sonu karakteri \r\n ile değil. Tüm dosyaları boş bir satır ile bitmelidir, bu özellikle yama (patch) uygularken gerekli oluyor. 

Sayfanın başındaki <?php kodundan sonra boş bir satır bırakılmalıdır, ayrıca dosya içindeki her bir kod bloğu boş bir satır ile birinden ayrılamlıdır. Örneğin bir fonksiyonun öncesinde ve sonrasında birer boş satır bırakılır. 

Sınıf tanımına sahip örnek bir dosya başlangıcı aşağıdaki şekilde olabilir;

<?php namespace This\Is\The\Namespace; use Drupal\foo\Bar; /** * İlgili class için açıklama girin */ class OrnekSinifAdi {

Modül dosyası ise aşağıdaki şekilde başlayabilir;

<?php /** * @file * İlgili dosya ile ilgili açıklamalar */ use Drupal\foo\Bar; /** * Implements hook_help(). */ function ornek_modul_help($route_name) {

Operatörler

Matematik ve kıyaslama operatörleri (+, -, =, !=, ==, > gibi) öncesinde ve sonrasında kodun okunurluğunu arttırmak için birer boşluk olmalıdır. Örneğin $degisken = $deger; şeklinde olmalıdır, $degisken=$deger; kullanımı yanlıştır. Bir diğer yanlış da alt alta satırlarda yer alan benzer değer atama kodlarında güzel görünmesi için tab'ler ile boşluk bırakılması ve = 'in aynı hizadan başlamasını sağlamaktır. Değer arttırma, azaltma operatörlerinde (++ veya --) boşluk bulunmamalıdır. 

Koşul ifadelerinde eşit değil != kullanılmalıdır, <> 'in kullanımından kaçınılmalıdır <> kontrolü PHP'de kullanılmamalıdır. 

Dönüşümler

Diğer programlama dillerinde olduğu gibi PHP'de de değişken tipleri arasında dönüşüm yapabilirsiniz. Dönüşüm sırasında (type) ve $degisken arasında bir boşluk bırakın.

(int) $degisken

Kontrol Yapıları

if, for, while, switch gibi döngü ve kontrol yapılarında komut sonrasında, parantezden önce bir boşluk bırakın, ayrıca if içinde yer alan kontrol yapılarında da birer boşluk bırakmanız gerekiyor.

if örneği;

if (condition1 || condition2) { action1; } elseif (condition3 && condition4) { action2; } else { defaultaction; }

Yukarıdaki örnekte de yer aldığı şekilde if sonrasında bir boşluk, karşılaştırma ifadeleri arasında yine bir boşluk yer alıyor. elseif ve else yapıları yeni satırda yer alıyor. if sonrasında tek bir işlem yapacak olsanız bile mutlaka süslü parantez { } kullanın. Yukarıdaki şekilde yer alan kullanım hem kodun okunurluğunu arttırıyor hem de kod içinde hata yapmanızın engelliyor. Açma parantezi { her zaman if ifadesi ile aynı satırda başlar ancak kapatma parantezi } alt satırda yer alır.

switch örneği;

switch (condition) { case 1: action1; break; case 2: action2; break; default: defaultaction; }

do-while örneği;

do { actions; } while ($condition);

Yukarıdaki örnekler Drupal için kodlamanın nasıl yapılması gerektiği konusunda fikir vermektedir. Kontrol ve döngü yapılarında dikkat edilecek en önemli iki konu boşluklar ve parantezlerin açılma ve kapanma şekilleridir.