PSR-1: Temel Kodlama Standardı

PSR-1 standardı, birlikte çalışılabilirliği sağlamak için teknik olarak kodlama standartlarını belirlememizi sağlar.


Genel bakış

  • PHP dosyalarınızda sadece <?php ya da <?= etiketleri kullanılmalıdır.
  • Kodlarınız UTF-8 Bomsuz olarak yazılmalıdır.
  • Kodlarınız ya tanımlardan (sınıf, fonksiyon, sabit vb.) ya da yan etiketlerden (çıktı, .ini değişikliği vb.) oluşmalıdır. İkisi birden olmamalıdır.
  • Namespace ve Sınıf'lar PSR-4 standardını takip etmelidir.
  • Sınıf isimleri StudlyCaps olarak yazılmalıdır. Yani her kelimenin baş harfi büyük olacak şekilde.
  • Sınıf sabitleri büyük harflerle ve alt çizgi ile ayrılacak şekilde tanımlanmalıdır.
  • Metod isimleri camelCase olarak tanımlanmalıdır. Yani ilk kelimenin baş harfi küçük, diğer kelimelerin baş harfleri büyü kolacak şekilde.

Dosyalar


PHP Etiketleri

Ya uzun <?php ?> kodları ya da kısa <?= ?> kodları kullanılmalıdır. Ancak ikisi aynı anda kullanılmamalıdır.


Karakter Kodlaması

UTF-8 bomsuz olmalıdır.


Yan Etkiler

Bir dosya içerisinde hem tanımlar hem de yan etkiye bağlı kodlamalar yapılmamalıdır.

Aşağıdaki örnek, uyulmaması gereken yanlış bir örnektir.

// yan etki: ini ayarını değiştirme
ini_set('error_reporting', E_ALL);

// yan etki: dosya yükleme
include "file.php";

// yan etki: çıktı
echo "<html>\n";

// tanım
function foo()
{
    // fonksiyon içeriği
}

Aşağıdaki örnek, uyulması gereken doğru bir örnektir.

<?php
// tanım
function foo()
{
    // fonksiyon içeriği
}

// koşullu tanımlar kabul görür, sorun yoktur
if (! function_exists('bar')) {
    function bar()
    {
        // fonksiyon içeriği
    }
}

Namespace ve Sınıflar

Namespace'ler ve sınıflar PSR-4 standardını takip etmelidir.

Bu da her sınıfın ayrı dosyalarda olması gerektiği ve her birisinin namespace'lerinin en az bir üst klasörü temsil etmesi gerektiği anlamına gelir.

Sınıf isimleri StudlyCaps olarak tanımlanmalıdır. Yani her kelimenin ilk harfi büyük olacak şekilde.

PHP 5.3 ve sonrası için namespace tanımları şu şekilde yapılmalıdır;

<?php
namespace Vendor\Model;

class Foo
{
}

PHP 5.2.x ve öncesi için ise kullanım prefix'ler şeklinde olmalıdır;

<?php
class Vendor_Model_Foo
{
}

Sınıf sabitleri, Özellikler ve Metodlar

Sınıf ifadesi tüm sınıfları, interface'leri ve trait'leri kapsamaktadır.


Sabitler

Sabitler, tamamı büyük olacak şekilde ve kelimeler arası alt tire ile yazılacak şekilde tanımlanmalıdır.

<?php
namespace Vendor\Model;

class Foo
{
    const VERSION = '1.0';
    const DATE_APPROVED = '2012-06-01';
}

Özellikler

Bu standart, özelliklerin kullanımıyla ilgili bir önerme içermez. $StudlyCaps, $camelCase ya da $under_score adlandırma kurallarından birisi kullanılabilir.

Ancak hangi adlandırma kuralı kullanılırsa kullanılsın, makul bir kapsamda tutarlı bir şekilde uygulanmalıdır. İsimlendirmeler vendor seviyesinde, paket seviyesinde, sınıf seviyesinde ya da metod seviyesinde olabilir.


Metodlar

Metod isimleri camelCase() olarak tanımlanmalıdır. Yani ilk kelimenin baş harfi küçük, diğer kelimelerin ilk harfi büyük olacak şekilde tanımlanmalıdır.