PSR Kodlama Standartları – PHP

Her geliştiricinin kendi kafasına göre kodlama yapmasının sonucunda kod karmaşası artar ve kod okunurluğu zorlaşır. PHP uzmanları bu soruna çözüm için PSR’ı çıkarıp bu kod karmaşasından kurtulmayı hedeflemişlerdir.

Bir şirkette çalışıyorsanız veya bir ekibe sahipsiniz. PHP proje geliştiriyorsanız kodların düzeni muhakkak sorun yaratır. Bazı geliştiriciler süslü parantezi aynı satırdan devam ettirirken bazıları bir alt satırdan başlatmaktadır. Bunun dışında bazıları class isimlerini testSinifi şeklinde verirken bazıları da TestSinifi olarak verebiliyor. Bu da okumayı zorlaştırıyor. PHP uzmanı yazılımcılar bu soruna çözüm olarak bazı standartlar belirlemişlerdir. Bu standartlar sayesinde kodlar tek bir düzende yazılmış oluyor.

PHP Standards Recommendations (PSR) Bu standartlara uyup uymamak sizin veya şirketinizin elinde. Yapılması zorunlu değil ama yapılırsa işleri kolayaştıran bir standart.

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

  • Autoloading yapısı üzerine kurulu bir mimariye sahiptir.
  • Her sınıfın bir namespace’i olmalıdır.
  • Her namespace’in bir üst namespace’i olmalıdır. Yani; \Proje_adi\namespace\class\
  • Her namespace’in alt namespace’leri olabilir.
  • Her namespace “_” işareti, / (DIRECTORY_SEPARATOR) olarak algılanmalıdır.
  • Proje adında, sınıf isimlerinde büyük küçük harf kombinasyonları olabilir.
//autoload fonksiyonu, PSR-0 standartların nasıl otomatik yüklendiğini gösterir.
<?php
function autoload($className)
{
$className = ltrim($className, ‘\\’);
$fileName = ”;
$namespace = ”;
if ($lastNsPos = strrpos($className, ‘\\’)) {
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = str_replace(‘\\’, DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
}
$fileName .= str_replace(‘_’, DIRECTORY_SEPARATOR, $className) . ‘.php’;
require $fileName;
}
spl_autoload_register(‘autoload’);
view rawgistfile1.txt hosted with ❤ by GitHub

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

PSR-1 standartları PSR-0 ı destekler ve bazı kod yazma stilleri vardır.

  • Dosyalar UTF-8 ve BOM’suz olmalıdır.
  • PHP dosyaları <?php başlamalı.
  • Metot isimleri camelCase olmalıdır.
  • Sınıf sabitleri tamamı büyük harften oluşmalıdır.
  • Değişken isimlerinde StudlyCaps, camelCase veya hepsi küçük şekilde alt çizgi dahil kullanım olabilir. getOption, get_option
  • Sınıf isimleri StudlyCaps olmalıdır.
<?php
// side effect: change ini settings
ini_set(‘error_reporting’, E_ALL);
// PHP 5.3 and later:
namespace ProjeAdi\Model;
class Foo
{
}
// PHP 5.2.x and earlier:
class ProjeAdi_Model_Foo
{
}
class Foo
{
const VERSION = ‘1.0’;
const DATE_APPROVED = ‘2012-06-01’;
}
view rawgistfile1.txt hosted with ❤ by GitHub

PSR-2 : Coding Style Guide (Kodlama Stili)

PSR-1’i destekler.

  • Her satırda önerilen 80 karakter, max 120 karakter olmalıdır.
  • Satırlarda tab yerine 4 boşluk kullanılmalıdır. (whitespace).
  • Namespace, class ismi, metot isminden sonra 1 boşluk bırakılmalı.
  • Metot, sınıf oluşturulduğunda açılan süslü parantezler “{” ismin bitişinde değil bir alt satırda açılmalı.
  • Operatörler ile değişkenler arasında bir karakter boşluk bırakılmalı.
  • true,false,null küçük kullanılmalı.
<?php
namespace Vendor\Package;
use FooInterface;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class Foo extends Bar implements FooInterface
{
public function sampleFunction($a, $b = null)
{
if ($a === $b) {
bar();
} elseif ($a > $b) {
$foo->bar($arg1);
} else {
BazClass::bar($arg2, $arg3);
}
}
final public static function bar()
{
// method body
}
}
view rawgistfile1.txt hosted with ❤ by GitHub

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.
/**
* Interpolates context values into the message placeholders.
*/
function interpolate($message, array $context = array())
{
// build a replacement array with braces around the context keys
$replace = array();
foreach ($context as $key => $val) {
$replace[‘{‘ . $key . ‘}’] = $val;
}
// interpolate replacement values into the message and return
return strtr($message, $replace);
}
// a message with brace-delimited placeholder names
$message = “User {username} created”;
// a context array of placeholder names => replacement values
$context = array(‘username’ => ‘bolivar’);
// echoes “User bolivar created”
echo interpolate($message, $context);
view rawgistfile1.txt hosted with ❤ by GitHub

Buna benzer 7-8 tane PHP standardı belirlenmiş. Bunları PSR standartları‘ndan takip edebilirsiniz. Düzenli iş yapmak istiyorsanız kullanmanızı tavsiye ederim. Bu konu hakkında düşüncelerinizi yorum yaparak bizlerle paylaşabilirsiniz.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Facebook
Google+
http://sanalbilgideposu.com/psr-kodlama-standartlari-php
Twitter
INSTAGRAM