CodeBlanks Logo Icon CodeBlanks

Meydan okuma - Mini API

PHP kursu · Orta seviye · Ders 115/115

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

  1. 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.

  2. format çağrısını tamamla

    $date = $this->createdAt->format(____);
    Cevabı göster
    $date = $this->createdAt->format("Y-m-d H:i");
  3. Fonksiyonları görevlerine eşle

    new DateTime
    tarih nesnesi oluşturur
    format
    tarihi dizeye çevirir
    markDone
    görevi tamamlar
    summarize
    rapor üretir

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