Meydan okuma - Mini API
Sınıf, JSON ve DateTime'la basit bir görev takip API'si yazarsın.
Meydan okuma - Mini API
Bu son meydan okumada basit bir görev takip API'si yazacaksın. Task sınıfı başlık, tamamlanma durumu ve oluşturma zamanını tutar; summarize() methodu bunları tek satırlık rapora çevirir.
Oluşturma zamanı için DateTime sınıfını kullanırsın; format("Y-m-d H:i") ile özelleştirilmiş tarih dizesi üretirsin. Görev bir nesne, koleksiyon ise ilişkisel dizidir. Bu, sınıf, DateTime ve dizi bilgisini birleştirir.
Task sınıfı iskeleti
Task sınıfında üç özel özellik tutulur: private string $title, private bool $done = false, private DateTime $createdAt. Constructor başlık ve DateTime alır; $done varsayılan false olur.
markDone() methodu $this->done = true yapar. summarize(): string methodu, görevi "[x] Başlık (2026-01-15 10:00)" biçiminde döndürür; tamamlanmamışsa köşeli parantez içi boşluk olur. $this->createdAt->format("Y-m-d H:i") çağrısı tarihi biçimlendirir.
Uygulama Task sınıfını ve summarize methodunu yaz
Task sınıfını tanımla: private string $title, private bool $done = false, private DateTime $createdAt. Constructor string $title ve DateTime $createdAt alsın. markDone(): void methodu $this->done = true yapsın. summarize(): string methodu $this->done doğruysa "[x] " değilse "[ ] " ile başlasın; sonra $this->title ve " (" . $this->createdAt->format("Y-m-d H:i") . ")" eklesin. Sonra $t = new Task("Fix login bug", new DateTime("2026-01-15 10:00")); $t->markDone(); echo $t->summarize() . "\n"; çağrısını ekle.
Örnek çözümü göster
i') ile tarihi ekle.
Örnek çözüm:
<?php
// Task sınıfını ve summarize methodunu yaz
class Task {
private string $title;
private bool $done = false;
private DateTime $createdAt;
public function __construct(string $title, DateTime $createdAt) {
$this->title = $title;
$this->createdAt = $createdAt;
}
public function markDone(): void {
$this->done = true;
}
public function summarize(): string {
$mark = $this->done ? "[x]" : "[ ]";
return $mark . " " . $this->title . " (" . $this->createdAt->format("Y-m-d H:i") . ")";
}
}
$t = new Task("Fix login bug", new DateTime("2026-01-15 10:00"));
$t->markDone();
echo $t->summarize() . "\n";
Kendini test et
-
new DateTime('2026-01-15 10:00') ile format('Y-m-d') ne döndürür?
- 15-01-2026
- 2026-01-15
- 10:00
- 2026-01-15 10:00
Cevabı göster
2026-01-15 — Doğru. Y yıl, m ay (sıfırlı), d gün (sıfırlı) verir; sonuç '2026-01-15' olur.
-
format çağrısını tamamla
$date = $this->createdAt->format(____);Cevabı göster
$date = $this->createdAt->format("Y-m-d H:i"); -
Fonksiyonları görevlerine eşle
- new DateTime
- tarih nesnesi oluşturur
- format
- tarihi dizeye çevirir
- markDone
- görevi tamamlar
- summarize
- rapor üretir