CodeBlanks Logo Icon CodeBlanks

Sabit kullanım örnekleri

PHP kursu · Orta seviye · Ders 40/115

Sınıf sabitleriyle yapılandırma değerleri ve durum kodları tanımlamayı öğrenirsin.

Yapılandırma ve durum kodları için sabitler

Sınıf sabitlerinin en yaygın kullanımlarından biri yapılandırma değerleri (configuration) ve durum kodları (status codes) tanımlamaktır.

Örnek: bir HTTP yanıt sınıfında durum kodları sabit olarak tanımlanır: class HttpResponse { const int OK = 200; const int NOT_FOUND = 404; const int SERVER_ERROR = 500; }. Bu, sihirli sayı (magic number) kullanmaktan kaçınmayı sağlar.

Diğer örnekler: log seviyeleri (INFO, WARNING, ERROR), roller (ADMIN, USER, GUEST), dosya modları (READ, WRITE). Bu örüntü PHP 8.1'deki enum'ların (BackedEnum) öncüsüdür.

Enum benzeri yapılar

Sınıf sabitleriyle enum benzeri (enum-like) yapılar kurabilirsin. PHP 8.1'den önce enum yoktu; bu yüzden sabitler yaygın bir örüntüydü.

Örnek: class OrderStatus { const string PENDING = 'pending'; const string PAID = 'paid'; const string SHIPPED = 'shipped'; }. Bir siparişin durumu OrderStatus::PAID gibi okunabilir bir sabitle ifade edilir; bu, 'paid' dizesini elle yazmaktan daha güvenlidir.

Bu örüntü, IDE otomatik tamamlama ve yeniden düzenleme (refactoring) desteği de sağlar.

Uygulama HttpResponse sınıfında durum kodu sabitleri

Bir HttpResponse sınıfı tanımla. const int OK = 200; ve const int NOT_FOUND = 404; sabitleri olsun. public function message(int $code): string metodu ekle; metod içinde if ($code === self::OK) { return 'Başarılı'; } ve if ($code === self::NOT_FOUND) { return 'Bulunamadı'; } koşulları olsun, en son return 'Bilinmiyor' döndürsün. Sonra $resp = new HttpResponse() oluştur ve echo $resp->message(HttpResponse::OK) . "\n" yazdır. (Beklenen çıktı: Başarılı)

Örnek çözümü göster
string { if ($code === self::OK) { return 'Başarılı'; } if ($code === self::NOT_FOUND) { return 'Bulunamadı'; } return 'Bilinmiyor'; } } sonra $resp = new HttpResponse(); echo $resp->message(HttpResponse::OK) . "\n";
Örnek çözüm:
<?php
// HttpResponse sınıfını tanımla
class HttpResponse {
    const int OK = 200;
    const int NOT_FOUND = 404;
    public function message(int $code): string {
        if ($code === self::OK) {
            return 'Başarılı';
        }
        if ($code === self::NOT_FOUND) {
            return 'Bulunamadı';
        }
        return 'Bilinmiyor';
    }
}
$resp = new HttpResponse();
echo $resp->message(HttpResponse::OK) . "
";

Kendini test et

  1. Aşağıdakilerden hangisi sınıf sabiti için iyi bir kullanım örneğidir?

    • Kullanıcının adı (her örnekte farklı)
    • HTTP durum kodları (200, 404, 500)
    • Geçici hesaplama sonucu
    • Veritabanı sorgu sonucu
    Cevabı göster

    HTTP durum kodları (200, 404, 500) — Doğru. HTTP durum kodları değişmez değerlerdir; sınıf sabiti idealdir.

  2. HTTP durum kodu sabiti tanımla

    class HttpResponse {
        ____
    }
    Cevabı göster
    class HttpResponse {
        const int NOT_FOUND = 404;
    }
  3. Sınıf sabiti örüntülerini eşleştir

    const int OK = 200
    HTTP durum kodu
    const string PENDING = 'pending'
    Enum benzeri durum
    const float PI = 3.14
    Matematiksel sabit
    const array LEVELS = ['INFO','ERROR']
    Log seviyeleri

Orta seviye bölümündeki tüm dersler