Özet - Sınıf sabitleri
const, :: ve ::class'la sipariş durumu sabitli sınıf yazarsın.
Özet - Sınıf sabitleri
Bu grupta sınıf sabitlerini öğrendin:
constile sınıf sabiti tanımlanır;$işareti yoktur, değiştirilemez.::operatörüyle dışarıdanClassName::CONSTANT, içeridenself::CONSTANTerişilir.::classsınıfın tam adını dize olarak verir.- Sabit değişmez; static property değişebilir.
- Yapılandırma, durum kodu ve enum benzeri yapılar için idealdir.
Şimdi bunları birleştirip Order sınıfında sipariş durumu sabitleri yazacaksın.
Uygulama Order sınıfında sipariş durumu sabitleri
Bir Order sınıfı tanımla. const string PENDING = 'pending'; ve const string SHIPPED = 'shipped'; sabitleri olsun. private string $status property'si ve public function __construct(string $status = self::PENDING) yapıcı metodu olsun; yapıcı $this->status = $status atasın. public function label(): string metodu ekle; metod if ($this->status === self::SHIPPED) { return 'Gönderildi'; } koşulu ve return 'Beklemede' döndürsün. Sonra $order = new Order(Order::SHIPPED) oluştur ve echo $order->label() . "\n" yazdır. (Beklenen çıktı: Gönderildi)
Örnek çözümü göster
:PENDING) { $this->status = $status; } public function label(): string { if ($this->status === self::SHIPPED) { return 'Gönderildi'; } return 'Beklemede'; } } sonra $order = new Order(Order::SHIPPED); echo $order->label() . "\n";
Örnek çözüm:
<?php
// Order sınıfını tanımla
class Order {
const string PENDING = 'pending';
const string SHIPPED = 'shipped';
private string $status;
public function __construct(string $status = self::PENDING) {
$this->status = $status;
}
public function label(): string {
if ($this->status === self::SHIPPED) {
return 'Gönderildi';
}
return 'Beklemede';
}
}
$order = new Order(Order::SHIPPED);
echo $order->label() . "
";
Sınıf sabitleri ipuçları
Sonuç olarak: const değişmeyen değerler içindir, static değişebilen değerler için. Sabitlere :: ile erişirsin; sınıf içinde self::, dışarıda ClassName::.
Yapılandırma, durum kodu ve enum benzeri yapılar için sabitleri kullan. Bu, kodunu daha okunaklı ve güvenli yapar; sihirli sayı (magic number) ve sihirli dize (magic string) sorununu önler.
Bir sonraki grupta interface'lerle sınıflar arası sözleşme (contract) tanımlamayı öğreneceksin.
Kendini test et
-
Sınıf sabiti kavramlarını eşleştir
- const
- Sınıf sabiti tanımlar
- ::
- Sabitlere erişim operatörü
- ::class
- Sınıfın tam adını verir
- self::
- Sınıf içi erişim
-
Bir e-ticaret uygulamasında sipariş durumu için en uygun seçim nedir?
- Sınıf sabitleri (const) ile tanımlı durumlar
- Her sipariş için ayrı bir değişken
- Veritabanında her seferinde yeni dize yazmak
- public property olarak saklamak
Cevabı göster
Sınıf sabitleri (const) ile tanımlı durumlar — Doğru. Sipariş durumları değişmez değerlerdir; sınıf sabiti idealdir.