Php Dersleri

Php Kodlama Standartları Tavsiyesi (PSR)

php dersleri

Php kodlama standartı, atasözlerinde yer aldığı gibi “Her yiğidin bir yoğurt yiyişi vardır” gibidir. Bilmeyenler yada bir anlam çıkartamayanlar için şöyle söyleyim, her geliştiricinin kendisine en kolay ve mantıklı gelen kodlama türüdür. Her dil gurubu içinde geçerlidir bu.

Her geliştiricinin yapmış olduğu kodlama türlerinde belli başlı benzerliklerde bulunur. Yani benzerlik var ama genel bir yazım tarzı yok. Buda yapılan kod işlemlerinin berirli standartlarda olmamasından dolayı farklı geliştiriciler tarafından zorluk çekilerek anlaşılmasına yol açmaktadır. Hal böyleyken php uzmanları yapmış oldukları araştırma ve deneyimleri doğrultusunda PSR’yi geliştirmişler.

Peki, PSR Nedir?

PSR açılım ve anlam olarak, PHP Standards Recommendations(Php Standartları Önerileri) anlamına gelmektedir. Php geliştirici uzmanlarının belirli standar formatlarına göre oluşturdukları önerileri kapsamaktadır. Bir çok kodlama tarzı olduğu içinde bir çok php kodlama standartı bulunmaktadır.

Kodlamaları PSR’ye Göre Mi Yapmak Gerekir?

Tabi ki de HAYIR! Bunların sadece bir öneriden ibaret olduğunu unutmayın! Öneriler arasında size en yakın olana göz atıp, php kodlama türünüzün hangi kategoride yer aldığını öğrenebilirsiniz. Bir tarzınız yoksa da listede yer alan kodlama türlerinden size en yakın olanına uyumsağlayabilirsiniz.

PSR – Php Standart Tavsiyeleri Nelerdir?

  • PSR-0 : Autoloading(Otomatik Yükleme) Standartları { Artık Önerilmemektedir. PSR-4 yeni alternatifidir }
  • PSR-1 : Temel Kodlama Standartları
  • PSR-2 : Kodlama Stili
  • PSR-3 : Logger Interface
  • PSR-4 : Geliştirilmiş Autoloader

PSR-0 ) Autoloading(Otomatik Yükleme) Standartları

  • (Artık Önerilmemektedir. PSR-4 yeni alternatifidir)
  • Namespace ve class çağrımları şu şekilde olabilir : \\(\)*
  • Her namespace in top bir namespace i olmalı. Yani yukarıdaki örnekte hep kullanılabilir.
  • Her namespace altında alt namespace’ler olabilir. ör: moduller/text_modulleri/..
  • Her bir namespace tanımı ve “_” işareti, / (DIRECTORY_SEPARATOR) olarak algılanmalıdır. ör: proje1/paketler/class/email_moduller/Email.php => /var/www/proje1/paketler/class/email/moduller/Email.php
  • Class çağırılırken class adı ve dosya uzantısı mutlaka olmalı. Ör: class/email/moduller/Email.php gibi.
  • Proje adı, class isimleri büyük veya küçük harf kombinasyonu olabilir.

PSR-1 ) Basic Coding Standard (Temel Kodlama Standardı)

  • Dosyalarda sadece • PHP dosyaları sadece UTF-8 ve BOM’suz kodlanmalıdır.
  • Dosyalar ya bir sembol tanımlamalı (Sınıf, Fonksiyon, Sabit vs.) ya da bir yan etki ( çıktı üretmek, .ini ayarlarını değiştirmek vs.) üretmelidir. Fakat ikisini birden yapmamalıdır.
  • Namespace ve sınıflar PSR-0 veya PSR-4 standardını izlemelidir.
  • Sınıf isimleri StudlyCaps (yani Aaaa\Bbbb\Ccc) şeklinde tanımlanmalıdır. Örn: Email_Yollama.php
  • Sınıf sabitleri tamamı büyük harf olacak şekilde tanımlanmalıdır.
  • Metot isimleri camelCase olmalıdır. (camelCase: değişken, sınıf, metod veya fonksiyonun kelimeleri bitişik ve küçük harfle başlayacak şekilde yazılmasıdır.)

PSR-2 ) Coding Style Guide (Kodlama Stili)

  • Kod PSR-1 kapsamında belirtilen kurallara uymak zorundadır.
  • Girintiler için 4 boşluk kullanılır. Tab değil
  • Satır uzunluklarında katı sınır olmamalıdır. yumuşak sınır 120 karakterdir. Satırlar mümkünse 80 karakter veya daha kısa olmalıdır.
  • namespace tanımlamasından sonra bir boş satır bırakılmalıdır. use tanımlamalarından sonra da bir satır boşluk olmalıdır.
  • Sınıfların açılış ve kapanış parantezleri alt satırda olmalıdır.
  • Metodların açılış ve kapanış parantezleri alt satırda olmalıdır.
  • Tüm metodlarda görünürlük ( public, protected, private ) tanımlaması bulunmak zorundadır abstract ve final tanımlamaları görünürlük tanımlamasından önce, static ise görünürlük tanımlamasından sonra olmalıdır.
  • Kontrol yapısı anahtar kelimelerinden sonra bir boşluk olmalıdır. metod ve fonksiyon çağrılarında boşluk olmamalıdır.
  • Metot ve class oluşturduğunuzda açılan süslü parantezler “{” ismin bitişinde değil alt satırına açılmalı.
  • Kontrol yapılarının açılış parantezlerinden sonra ve kapanış parantezlerinden önce boşluk olmamalıdır.

PSR-3 ) Logger Interface (Loglayıcı Arayüzü)

  • Loglama üzerine kurulu standartlardır.
  • 8 level log tipi olmasını öneriyor. (debug, info, notice, warning, error, critical, alert, emergency)
  • Her metot string veya obje kabul edebilir.
  • Mesaj içerisindeki placeholder lar, verilen array içerisindekiler ile değiştirilir.
  • Mesaj içerisindeki placeholder lar {} arasında yazılır.
  • Placeholder lar A-Z, a-z, 0-9, _ karakterlerinden oluşabilir.

PSR-4 ) Geliştirilmiş Autoloader(Otomatik Yükleme)

  • \<NamespaceAdı>(\)*\<ClassAdı>
  • Tam nitelikli class adı “Sağlayıcı Namespace’si” olarak da bilinen bir üst düzey namespace’e sahip olmalı.
  • Tam nitelikli class adının bir veya daha fazla namespace’i olabilir.
  • Alt çizginin class adında herhangi bir bölümünü için özel bir anlamı yok
  • Class adları büyük veya küçük harflerin herhangi bir kombinasyonundan oluşabilir.

Sözünü ettiğim Php Standartları bu şekildedir. “Ben bu standartları ne yapacağım, Kafam iyice karıştı!” diyebilirsiniz. Unutmayın ki bu standartlara uymak zorunda değilsiniz. Fakat böyle bir stadart olduğunu bilmenizde fayda var. Nede olsa php, kişiden kişiye değişen bir kodlama tarzına sahip bir dildir. Belli bir standartı olmuş olsaydı bu kadar geliştiricisi olmazdı.

Diğer önemli php standart önerilerini merak edenler PSR Standartları sayfasından takip edebilirsiniz. Aynı şekilde PSR standartlarına ait örnek kodlara bu sayfadan ulaşabilirsiniz. Standartları kodlar üzerinden detaylı bir şekilde inceleyebilirsiniz.

Bir önceki yazım olan PDO yada MySQLi Kullanmazsak Ne Olur? başlıklı makalemde MySQL, MySQLi ve pdo hakkında bilgiler vermekteyim.

İlgilizi Çekecek Konular

Basit Bir Argo Söz Filtresi Hazırlama

ibrahim Çevrük

Php ile Yazıları Belirli Oranda Kısaltmak

ibrahim Çevrük

Php ile Girilen Değerleri Tekrarlatmak (str_repeat)

ibrahim Çevrük

1 Yorum

İsmail Çiloğlu 19 Ekim 2018 at 00:03

Konu çok iyi fakat bi yeri anlamadım. Örnekle sorayım
Benim 2 klasörüm var.
1.sınıf
2.panel
Sınıf klasörü içinde
Sadece 1 dosya hariç(tema..class.php) hepsi işlem (veritabanı ,sorgu kayıt güncelleme vs ) dosyası
Panel klasörü içinde makale işlemi için
İçerik klasörü olışturdım bunun içinde makale klasörünü oluşturduk burada 2 dosyam var
1. İndex.php(ekle/düzenle/sil işlemleri yaptığım dosya )
2.ajax.php (yukarıda saydığım işlemleri yaptığım dosya )
öncelikle namespace kullanmayı bilmiyorum bunu ele alarak ilk ne yapmam gerekir bu şekilde sizce yaptığım şey ne kadar düzen sağlar benden başka birine versem zorlanır mı?
Psr standartlarına göre kodlama için Nasıl bi yol önerirsiniz nerden başlamalı 🙂 namespace ve use anlatımını bekliyorum 🙂

Cevap

Yorum Giriniz