CodeBlanks Logo Icon CodeBlanks

Proje sonu - Blog

PHP kursu · Orta seviye · Ders 69/115

Tüm parçaları birleştirip çalışan blog uygulamasını tamamlarsın.

Tüm parçaları birleştir

Son derste tüm parçaları birleştireceksin. Post sınıfı (property'ler, yapıcı metot, summary) hazır. Şimdi bir Blog sınıfı ile birden çok yazıyı tek pakette yöneteceksin.

Blog sınıfının public array $posts = []; property'si yazıları bir dizide tutar. addPost(Post $post): void metodu yeni yazı ekler, listPosts(): string metodu ise tüm yazıların özetlerini birleştirip tek dize olarak döndürür. Böylece formdan gelen yazıları toplayıp tek bir çıktı halinde gösterebilirsin.

Blog sınıfı ile yazı yönetimi

Blog sınıfında addPost metodu $this->posts[] = $post; ile yeni yazıyı dizinin sonuna ekler. listPosts metodu ise foreach ile tüm yazıları gezer, her birinin summary() metodunu çağırıp sonucu bir $output değişkeninde birleştirir.

Kullanımı: $blog = new Blog(); ile boş blog oluşturur, $blog->addPost(new Post(...)); ile yazı ekler, echo $blog->listPosts(); ile tüm listeyi yazdırırsın. Bu desen, gerçek blog sistemlerinin çekirdeğidir.

Uygulama Blog sınıfını ekle ve blogu çalıştır

Post sınıfından sonra Blog sınıfını tanımla. İçine public array $posts = []; property'sini ekle. public function addPost(Post $post): void metodunu yaz; içinde $this->posts[] = $post; ata. public function listPosts(): string metodunu ekle; içinde $output = ""; ile başlat, foreach ($this->posts as $post) ile gez, $output .= $post->summary() . "\n"; ile ekle ve return $output; ile döndür. Son satırlarda $blog = new Blog(); ile blog oluştur, iki yazı ekle ve echo $blog->listPosts(); ile yazdır.

Örnek çözümü göster
void { $this->posts[] = $post; } public function listPosts(): string { $output = ""; foreach ($this->posts as $post) { $output .= $post->summary() . "\n"; } return $output; } } yaz. $blog = new Blog(); $blog->addPost(new Post("İlk yazı", "Merhaba dünya", "Ayşe")); $blog->addPost(new Post("İkinci yazı", "PHP güzel", "Alex")); echo $blog->listPosts(); ile çalıştır.
Örnek çözüm:
<?php
// Tüm parçaları birleştir: Post + Blog sınıfları
class Post {
    public string $title = "";
    public string $content = "";
    public string $author = "";

    public function __construct(string $title, string $content, string $author) {
        $this->title = $title;
        $this->content = $content;
        $this->author = $author;
    }

    public function summary(): string {
        return $this->title . " - " . $this->author;
    }
}

class Blog {
    public array $posts = [];

    public function addPost(Post $post): void {
        $this->posts[] = $post;
    }

    public function listPosts(): string {
        $output = "";
        foreach ($this->posts as $post) {
            $output .= $post->summary() . "\n";
        }
        return $output;
    }
}

$blog = new Blog();
$blog->addPost(new Post("İlk yazı", "Merhaba dünya", "Ayşe"));
$blog->addPost(new Post("İkinci yazı", "PHP güzel", "Alex"));
echo $blog->listPosts();

Proje tamamlandı

Tebrikler! Blog uygulaması projesini tamamladın. Beş ders boyunca bir Post sınıfı tasarladın: property'ler, yapıcı metot ve summary metodu ile. Sonra HTML form ve $_POST ile yeni yazı oluşturmayı, foreach ile yazı listesini göstermeyi öğrendin. Son olarak Blog sınıfı ile tüm parçaları birleştirdin.

Artık bu sınıfları gerçek bir web sayfasında kullanabilirsin: form gönderildiğinde Post örneği oluşturup Blog'a ekleyip ana sayfada listeleyebilirsin. OOP ile veriyi ve davranışı tek pakette tutmak, kodun bakımını ve genişletilmesini kolaylaştırır.

Kendini test et

  1. Blog uygulamasını çalıştırmak için ne gerekir?

    • Post ve Blog sınıflarını tanımla, örnek oluştur ve metotları çağır
    • Yalnızca echo komutu yaz
    • Veritabanı bağlantısı kur
    • Harici bir CSS dosyası yükle
    Cevabı göster

    Post ve Blog sınıflarını tanımla, örnek oluştur ve metotları çağır — Doğru. Sınıfları tanımlayıp örnek oluşturmak ve metotları çağırmak yeterli; blog konsolda çalışır.

  2. addPost metodunun gövdesini tamamla

    public function addPost(Post $post): void {
        $this->posts[] = ____;
    }
    Cevabı göster
    public function addPost(Post $post): void {
        $this->posts[] = $post;
    }
  3. Blog uygulaması parçalarını eşleştir

    Post
    Yazı sınıfı
    Blog
    Yazıları yönetir
    addPost()
    Yazı ekler
    listPosts()
    Listeyi döndürür

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