Kaan Tanış, Mersin’de freelance web tasarım, yazılım geliştirme ve mobil uygulama üreten full-stack geliştirici ve UI tasarımcısıdır.

PSR Standartları Nedir? PHP FIG Standartları ile Kod Kalitenizi Artırın

PSR Standartları Nedir? PHP FIG Standartları ile Kod Kalitenizi Artırın

Laravel ile çalışıyorsanız PSR standartlarına zaten uyuyorsunuz, farkında olmadan. Framework sizin yerinize hallediyor. Ama kendi paketinizi yazmaya ya da başkasının kodunu okumaya kalktığınızda bu standartların ne olduğunu bilmek işi kolaylaştırıyor.

PSR, PHP Standards Recommendation'ın kısaltması. PHP-FIG denen, framework geliştiricilerinin bir araya geldiği grup yayınlıyor. Amaç basit: herkes kafasına göre yazmasın, kodlar birbirine benzesin.

PSR-1: temel kurallar

En temeli bu. Sınıf isimleri PascalCase, metotlar camelCase, sabitler BÜYÜK_HARF. Dosyalar <?php ile başlar, kodlama UTF-8 olur. Büyük ihtimalle bunları zaten yapıyorsunuz.

PSR-12: kod stili

Eskiden PSR-2 vardı, onun yerini PSR-12 aldı. Girinti, süslü parantezlerin yeri, satır uzunluğu gibi şekil işleri. Bununla elle uğraşmayın, Laravel Pint ya da PHP-CS-Fixer hallediyor. Pint kullanıyorsanız zaten uyumlusunuz demektir.

namespace App\Controllers;

use App\Models\User;
use Psr\Log\LoggerInterface;

class UserController
{
    private LoggerInterface $logger;

    public function __construct(LoggerInterface $logger)
    {
        $this->logger = $logger;
    }

    public function getUser(int $id): ?User
    {
        return User::find($id);
    }
}

PSR-4: autoloading

Namespace ile klasör yapısının birebir eşleşmesi kuralı. Yani App\Controllers\UserController sınıfı, src/App/Controllers/UserController.php dosyasında durur. Composer buna bakarak dosyayı otomatik yükler. Laravel projesinde hiç düşünmeden kullandığınız şey bu.

PSR-7: HTTP mesajları

Request ve response nesnelerinin ortak dili. API yazarken ya da middleware tarafında çalışırken karşınıza çıkar. Fikir şu: istek ve yanıt değiştirilemez (immutable) nesneler olsun, her framework aynı metot isimlerini kullansın.

$request->getMethod(); // GET
$request->getUri(); // /api/users
$request->getHeader('Content-Type'); // application/json

$response->getStatusCode(); // 200
$response->getReasonPhrase(); // OK

PSR-3 ve önbellek (PSR-6 / PSR-16)

PSR-3 loglama için ortak arayüz. emergency, alert, critical, error, warning, notice, info, debug seviyeleri var. Laravel'de altta Monolog çalışır, o da PSR-3 uyumludur. Önbellek tarafında PSR-6 biraz detaylı, PSR-16 daha sade. Günlük iş için PSR-16'nın basit get/set arayüzü genelde yetiyor.

Hepsini ezberlemeye gerek yok. PSR-12 için Pint, PSR-4 için Composer, gerisi ihtiyaç olunca bakılır. Ama isimleri bilmek, bir dokümanda karşılaştığınızda neyle uğraştığınızı anlamanızı sağlıyor.

İlgili Yazılar

Yorum Yap

Yorumunuz onaylandıktan sonra yayınlanacaktır. Bildirim almak isterseniz e-posta adresinizi girebilirsiniz.