Sabit kullanım örnekleri
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
-
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.
-
HTTP durum kodu sabiti tanımla
class HttpResponse { ____ }Cevabı göster
class HttpResponse { const int NOT_FOUND = 404; } -
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