Kodlama Stilleri (PSR-0)

PHP Topluluğu inanılmaz büyük ve sayısız framework ve kütüphaneye sahip. Herkes kendi projelerine bu kütüphaneleri dahil etmek ister. Kodlama stilleri ile amaçlanan bu kütüphaneleri sıkıntısız bir şekilde projelerimize dahil etmek (elinden geldiğince). Framework Interop Group bazı kodlama stilleri önermişlerdir. Bunlar: PSR-0PSR-1 ve PSR-2 Bu standartlar farklı geliştiriciler tarafından sizin kodlarınızı kolay bir şekilde düzenlemesine olanak sağlamaktır. Bu yazımda ise PSR-0’dan bahsedeceğim.

PSR-0

Zorunluluklar

  • Tüm namespace ve classlar şu formatta olmalıdır:

\Sağlayıcı İsmi\(Namespace\)Class Adı

  • Tüm namespacelerin üstünde bir Sağlayıcı İsmi olmak zorundadır.
  • Her bir namespace’in altında istediği kadar namespace olabilir.
  • Her bir namespace yüklenirken namespace ayracı (), klasör ayracına dönüştürülür.
  • Class ismindeki her bir alt çizgi (_), klasör ayracına dönüştürülür.
  • Her bir namespace ve class dosyası .php uzantısına sahip olmalıdır.
  • sağlayıcı adı, namespace ve class isimlerinde büyük, küçük harfin önemi yoktur.

Örnekler

\Doctrine\Common\IsolatedClassLoader => /proje/yolu/lib/vendor/Doctrine/Common/IsolatedClassLoader.php

Sağlayıcı Adı: Doctrine
Namespace: Common
Class: IsolatedClassLoader

\CanGelis\Controller\Post => /proje/yolu/lib/vendor/CanGelis/Controller/Post.php

Sağlayıcı Adı: CanGelis
Namespace: Controller
Class: Post

Alt çizgili örnekler

\CanGelis\Controller\User_Post => /proje/yolu/lib/vendor/CanGelis/Controller/User/Post.php

Örnek Kodlama:

include edilecek class adını vererek, include edilecek dosyayı bulan bir fonksiyon;

function yuklenecekDosya($classAdi)
{
    $classAdi = ltrim($classAdi, '\\');
    $fileName  = '';
    $namespace = '';
    if ($lastNsPos = strrpos($classAdi, '\\')) {
        $namespace = substr($classAdi, 0, $lastNsPos);
        $classAdi = substr($classAdi, $lastNsPos + 1);
        $dosyaAdi  = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
    }
    $dosyaAdi .= str_replace('_', DIRECTORY_SEPARATOR, $classAdi) . '.php';

    require $dosyaAdi;
}

PSR-0 composer gibi paket yöneticilerinde kullanılıyor. Ayrıca şurada PSR-0 uyumlu classların otomatik yüklenmesini yaptık 🙂 Daha detaylı bilgi için: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax