PSR-1 Standartları

Linux ortamı için Oxygine C++ Game Framework'un kurulumu ile ilgili bir makaledir. Kurulum adımlarını takip ederek bir geliştirme ortamına sahip olacağız.

Bu bölümde standart kodlama elementlerinin kullanımı sırasında yapmanız gerekenleri öğreneceksiniz.

ÖZET

  • PHP dosyalarınızda sadece <?php ve <?= etiketlerini kullanabilirsiniz.
  • Dosyanız kodlaması UTF-8 BOM’suz olmalıdır.
  • Dosyalarınız ya sadece deklare etmeli (sınıflar, fonksiyonlar, sabitler, vs.) yada yan-işlem yapmalıdır.(çıktı verme, .ini/.xml güncelleme vs.). Kesinlikle iki işlem için de kullanmayın.
  • Namespace ve sınıflar, PSR’ninautoloading(otomatik yükleme) sistemine uymalıdır. [PSR-0, PSR-4]
  • Sınıf isimleri baş harfi büyük olmalıdır. (Örn; BlogController, SystemLog)
  • Sınıf sabitleri tamamı büyük olmalı ve alt çizgi ile ayırılmalıdır. (Örn; DIRECTORY_SEPARATOR, DEBUG
  • Metot isimleri, ilk harf hariç kelime başları büyük olmalıdır. (Örn; showIndex, editPost)

Dosyalar

PHP Etiketleri

PHP kodunuz <?php ... ?> veya <?= ... ?> etiketlerini kullanmalıdır.

Karakter Kodlaması

PHP dosyanızın kodlaması UTF-8 BOM’suz olmalıdır.

Yan-İşlem

Bir dosyanız ya sadece deklare yada yan-işlem yapmalıdır.

“Yan-işlem” derken bahsetmek istediğim, bir yapı oluştururken hem sınıf, metot, sabit deklare edip hem de kullanılmamalıdır. Dosya include yapılmalıdır.

“Yan-işlem” sadece çıktı vermek değildir, ayrıca servise bağlanmak, include/require yapmak, .ini/.xml düzenlemek, exceptionlar, global ve statik değer düzenleme, dosyadan okuma veya dosyaya yazmak gibi işlemlerdir.

Aşağıdaki örnek, hem deklare eden hem de yan-işlem yapan bir kod örneği.

<?php
// yan-işlem: ini ayarlarını düzenleme
ini_set("error_reporting", E_ALL);

// yan-işlem: dosya include etme
include "file.php";

// yan-işlem: çıktı verme
echo "<html>\n";

// deklarasyon
function foo()
{
	// ...
}

Aşağıdaki örnek de yan-işlem yapmayan ve deklarasyon yapan bir dosyadır.

<?php
// deklarasyon
function foo()
{
	// ...
}

// koşula bağlı deklarasyon, yan-işlem **değildir**.
if ( ! function_exists("bar")) {
	function bar()
    {
    	// ...
    }
}

Namespace ve Sınıf İsimleri

Namespaceler ve sınıflar, PSR’nin otomatik yükleme kurallarına uymalıdır. [PSR-0, PSR-4]

Bu demek oluyor ki, her sınıf kendi dosyasının içinde ve en az 1 namespace altında olmalıdır.

Sınıf isimleri baş harfleri büyük tanımlanmalıdır. (Örn; StockController)

PHP 5.3 ve sonrasını kullananlar normal namespace kullanabilir. Örnek olarak;

<?php
// PHP 5.3 ve sonrası:
namespace Vendor\Controller;

class Foo
{
}

PHP 5.2.x ve öncesini kullananlar şu şekilde kullanabilir:

<?php
// PHP 5.2.x ve öncesi:
class Vendor_Controller_Foo
{
}

Sınıf Sabitleri, Ayarlar ve Metotlar

Buradaki “sınıf”tan kastım, tüm sınıflardır.(class, interface, trait)

Sabitler

Sınıf sabitleri tamamen büyük olmalıdır ve alt çizgi ile kelimeler ayrılmalıdır. Örnek olarak:

<?php
namespace Vendor\Controller;

class Foo
{
    const VERSION       = '1.0';
    const DATE_APPROVED = '2014-12-12';
}

Ayarlar

Şuan için belirlenmiş bir sabit yok. $BasHarfleriBuyuk, $ilkHarfiKucuk, veya $alt_cizgi isimlerini istediğiniz gibi kullanabilirsiniz.

Fakat unutulmamalıdır ki, adlandırma kuralları makul olmalıdır. Anlaşılır bir isim seçilmelidir.

Metotlar

Metot isimleri ilk harfi küçük ve diğer kelime başları büyük olmalıdır. (Örn; showIndex, editPost)

Eray AYDIN

Eray AYDIN
Senior PHP Developer and Linux System Administrator, Free Software Fan, Archy (On Way Trust User), Junior Game Developer