Tekrar - Düzenli Proje
Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 14 / 91.
Görev
KolayUygun namespace organizasyonuyla eksiksiz bir blog uygulaması oluşturalım ve namespace'ler, use anahtar sözcüğü ve PSR-4 otomatik yükleme hakkında öğrendiğiniz her şeyi bir araya getirelim.
Gerçek PHP uygulamalarının kodlarını nasıl organize ettiğini gösteren, beş dosyadan oluşan iyi yapılandırılmış bir proje oluşturacaksınız:
src/Models/Author.php:Blog\Modelsnamespace'inde birAuthorsınıfı tanımlayın. Bu sınıfta birpublic $nameözelliği, adı kabul edip atayan bir yapıcı ve"Author: [name]"değerini döndüren birgetBio()metodu bulunmalıdır.src/Models/Post.php:Blog\Modelsnamespace'inde birPostsınıfı tanımlayın. Bu sınıftapublic $titlevepublic $authorözellikleri bulunmalıdır (burada author birAuthornesnesidir). Yapıcı, bir başlık ve birAuthornesnesi kabul ederek her ikisini de ayarlamalıdır."[title] by [author name]"değerini döndüren birgetSummary()metodu ekleyin.src/Services/Publisher.php:Blog\Servicesnamespace'inde birPublishersınıfı tanımlayın. Bu sınıfta birPostnesnesi kabul eden ve"Published: [post title]"değerini döndüren birpublish(Post $post)metodu bulunmalıdır. Farklı bir namespace'te bulunduğu içinuseanahtar sözcüğünü kullanarakPostsınıfını içe aktarmanız gerekir.vendor/autoload.php:Blog\namespace önekinisrc/dizinine eşleyen,spl_autoload_registerkullanarak bir PSR-4 otomatik yükleyici oluşturun. Bu tek otomatik yükleyici, tüm sınıflarınızın otomatik olarak yüklenmesini sağlar.index.php: Giriş noktanız. Otomatik yükleyiciyi dahil edin, ardındanBlog\Models\Author,Blog\Models\PostveBlog\Services\Publishersınıflarını içe aktarmak içinuseanahtar sözcüğünü kullanın."Jane Smith"adlı birAuthor, bu yazarı kullanarak"Getting Started with PHP"başlığına sahip birPostve birPublisheroluşturun. Yazarın biyografisini, gönderinin özetini ve gönderiyi yayımlama sonucunu yazdırın (her biri kendi satırında).
Publisher servisinin Post modeline nasıl bağımlı olduğuna dikkat edin. Bu, farklı namespace'lerdeki sınıfların ihtiyaç duydukları öğeleri use ifadeleriyle içe aktararak birlikte nasıl çalışabileceklerini gösterir.
Kendin dene
<?php
// Autoloader'ı gerektir
require_once 'vendor/autoload.php';
// TODO: Gerekli sınıfları 'use' ifadeleri kullanarak içe aktar
// - Blog\Models\Author
// - Blog\Models\Post
// - Blog\Services\Publisher
// TODO: "Jane Smith" adında bir Author oluştur
// TODO: Create a Post with title "Getting Started with PHP" using that author
// TODO: Bir Publisher oluştur
// TODO: Yazarın biyografisini yazdır
// TODO: Gönderinin özetini yazdır
// TODO: Gönderiyi yayınlamanın sonucunu yazdır
?>Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesneler$this Anahtar SözcüğüMetotlarÖzelliklerYapıcı (__construct)Yıkıcı (__destruct)Tekrar - Basit Hesap Makinesi4Kalıtım
Temel Kalıtımparent:: Anahtar SözcüğüMetot Geçersiz Kılmafinal Anahtar SözcüğüSoyut SınıflarTekrar - Çalışan Hiyerarşisi7Kapsülleme
Public, Protected, PrivateErişim Belirleyicileri DerinlemesineGetter ve Setter'larBilgi GizlemeYapıcı Özellik Terfisi (8.0)Tekrar - Öğrenci Kayıt Sistemi10İleri Düzey OOP Kavramları
Composition ve KalıtımBağımlılık EnjeksiyonuAnonim SınıflarEnum'lar (PHP 8.1)Fiber'lar (PHP 8.1)Nesne Klonlamaya Derinlemesine BakışÜreteçler ve Yineleyiciler13Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıBileşik KalıpDepo Kalıbı2Namespace’ler ve Autoloading
Namespace’lere Girişuse Anahtar SözcüğüPSR-4 Autoloading StandardıComposer AutoloaderTekrar - Düzenli Proje5Arayüzler ve Sözleşmeler
Arayüzlere GirişArayüzleri UygulamaBirden Çok Arayüz UygulamaArayüz ve Soyut Sınıf KarşılaştırmasıArayüzlerle Tür İpuçlarıTekrar - Şekil Hesaplayıcı8Sihirli Metotlar
Sihirli Metotlara Giriş__toString ve __debugInfo__get, __set, __isset, __unset__call ve __callStatic__clone ve Nesne Klonlama__serialize ve __unserializeTekrar - Özel Koleksiyon3Sınıf Özellikleri
Örnek ve Statik ÖzelliklerSınıflarda SabitlerStatik Metotlar ve ÖzelliklerPrivate ve Protected ÖzelliklerSalt Okunur Özellikler (PHP 8.1)Tekrar - Banka Hesabı Yöneticisi6Çok Biçimlilik
Metot Geçersiz Kılmayı Yeniden Ele AlmaArayüzler Yoluyla Çok BiçimlilikTür İpuçları ve Birleşim TürleriGeç Bağlanan Statik ÇağrılarÖzet - Ödeme İşlemcisi9Trait'ler
Trait'lere GirişBirden Çok Trait KullanımıTrait Çakışmalarını ÇözümlemeTrait'lerde Soyut MetotlarTrait'ler ve Kalıtım Karşılaştırması12Tasarım Desenleri 1. Bölüm
Tasarım Desenlerine GirişSingleton DeseniFactory DeseniObserver DeseniStrategy DeseniKendi başına pratik yap: Online PHP derleyicisi