Test ve Entegrasyon
Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 87 / 91.
Görev
KolayTam teşekküllü bir Kütüphane Yönetim Sistemi oluşturdun, tebrikler! Şimdi tüm bileşenlerini bir araya getirmenin ve her şeyin sorunsuz çalıştığını doğrulamanın zamanı. Kütüphanenin tüm iş akışını çalıştıran kapsamlı bir entegrasyon testi oluşturacaksın.
Kodunu beş dosya arasında düzenleyeceksin:
Book.php: readonly özelliklere (isbn,title,author), private bir$isAvailableözelliğine ve şu metotlara sahipBooksınıfın:isAvailable(),markAsBorrowed()vemarkAsReturned().User.php: Book dosyasını dahil et. readonly özelliklere (id,name), private bir$borrowedBooksdizisine,3değerinde birMAX_BOOKSsabitine ve tüm kullanıcı metotlarına sahipUsersınıfın.Library.php: User dosyasını dahil et. Kitap yönetimi, ödünç alma/iade işlevleri, arama metotları veremoveBook()metoduna sahipLibrarysınıfın.Admin.php: Library dosyasını dahil et.Usersınıfını genişleten veaddBookToLibrary()ileremoveBookFromLibrary()metotlarına sahipAdminsınıfın.main.php: Admin dosyasını dahil et. Entegrasyon testini burada çalıştıracaksın. İki girdi alacaksın: bir kullanıcı adı ve bir yazar arama anahtar sözcüğü.Kütüphane sistemini kur:
- Bir
Libraryoluştur - ID değeri
1ve adı"LibraryAdmin"olan birAdminoluştur - ID değeri
2ve sağlanan kullanıcı adına sahip birUseroluştur
Yöneticiye şu üç kitabı eklettir:
- ISBN:
"978-0", Başlık:"PHP Fundamentals", Yazar:"Sarah Johnson" - ISBN:
"978-1", Başlık:"OOP Patterns", Yazar:"Mike Chen" - ISBN:
"978-2", Başlık:"Web Security", Yazar:"Sarah Johnson"
Ardından her sonucu yeni bir satıra yazdırarak şu entegrasyon testi sırasını çalıştır:
- Kullanıcıya
"978-0"kitabını ödünç aldır - Kullanıcıya
"978-1"kitabını ödünç aldır - İkinci girdiyi kullanarak yazara göre ara ve sayıyı yazdır:
"Books by author: [count]" - Mevcut kitapları al ve şunu yazdır:
"Available: [count]" - Kullanıcıya
"978-0"kitabını iade ettir - Mevcut kitapları tekrar al ve şunu yazdır:
"Available after return: [count]" - Yöneticiye
"978-0"kitabını kaldırt - Yöneticinin
"978-0"kitabını tekrar kaldırmayı denemesini sağla
- Bir
Bu son meydan okuma, sisteminin tamamının birlikte çalıştığını doğrular: yöneticilerin envanteri yönetmesi, kullanıcıların limitler dahilinde kitap ödünç alması, aramaların doğru sonuçlar döndürmesi ve iş akışı boyunca müsaitlik durumunun doğru şekilde güncellenmesi.
Kendin dene
<?php
require_once 'Admin.php';
// Girdileri oku
$userName = trim(fgets(STDIN));
$searchAuthor = trim(fgets(STDIN));
// TODO: Bir Library oluştur
// TODO: ID 1 ve adı "LibraryAdmin" olan bir Admin oluştur
// TODO: ID 2 ve sağlanan kullanıcı adıyla bir User oluştur
// TODO: Admin'in üç kitap eklemesini sağla:
// - ISBN: "978-0", Title: "PHP Fundamentals", Author: "Sarah Johnson"
// - ISBN: "978-1", Title: "OOP Patterns", Author: "Mike Chen"
// - ISBN: "978-2", Title: "Web Security", Author: "Sarah Johnson"
// TODO: Entegrasyon test sırası:
// 1. Kullanıcının "978-0" ödünç almasını sağla
// 2. Kullanıcının "978-1" ödünç almasını sağla
// 3. Search by author using $searchAuthor and print: "Books by author: [count]"
// 4. Mevcut kitapları al ve yazdır: "Available: [count]"
// 5. Kullanıcının "978-0" iade etmesini sağla
// 6. Get available books again and print: "Available after return: [count]"
// 7. Admin'in "978-0" öğesini kaldırmasını sağla
// 8. Admin'in "978-0" öğesini tekrar kaldırmayı denemesini sağla
?>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 Koleksiyon11Tür Sistemi ve Hata Yönetimi
Tür BildirimleriNullable TürlerBirleşim ve Kesişim Türleriİstisna SınıflarıÖzel İstisna HiyerarşisiTry, Catch, FinallyTekrar - Form Doğrulayıcı14Proje: Kütüphane Yönetimi
Proje Genel BakışıKitap ve Kullanıcı Sınıfları3Sı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