Kitap ve Kullanıcı Sınıfları
Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 83 / 91.
Görev
KolayBook ve User sınıflarını oluşturarak Kütüphane Yönetim Sistemimizin temelini oluşturalım. Bu temel alan nesneleri, kütüphane işlemlerini yönetmek için birlikte çalışacak.
Kodunuzu üç dosyaya ayıracaksınız:
Book.php: Kütüphane kitaplarını takip eden birBooksınıfı oluşturun. Kitabınız, kurucu destekli özellik tanımlama kullanılarak ayarlanan üç salt okunur özelliğe sahip olmalıdır:isbn,titleveauthor.trueolarak başlayan özel bir$isAvailableözelliği ekleyin. Üç yöntem ekleyin:isAvailable(): bool: kullanılabilirlik durumunu döndürürmarkAsBorrowed(): void: kullanılabilirliği false olarak ayarlarmarkAsReturned(): void: kullanılabilirliği true olarak ayarlar
User.php: Book dosyasını dahil edin ve kütüphane üyelerini temsil eden birUsersınıfı oluşturun. Kullanıcınız, kurucu destekli özellik tanımlama aracılığıyla iki salt okunur özelliğe sahip olmalıdır:id(int) vename(string). Özel bir$borrowedBooksdizisi (başlangıçta boş) ve3olarak ayarlanmış birMAX_BOOKSsabiti ekleyin. Şu yöntemleri ekleyin:getBorrowedBooks(): array: ödünç alınan kitaplar dizisini döndürürcanBorrow(): bool: kullanıcı MAX_BOOKS sayısından daha az kitap ödünç almışsa true döndürüraddBook(Book $book): void: bir kitabı ödünç alınan kitaplar dizisine eklerremoveBook(string $isbn): void:array_filterkullanarak ISBN'ye göre bir kitabı kaldırır
main.php: User dosyasını dahil edin ve sınıflarınızı hayata geçirin. Dört girdi alacaksınız: kullanıcı kimliği, kullanıcı adı, kitap ISBN'si ve kitap başlığı (yazar"Unknown"olacaktır).Sağlanan değerlerle bir
Userve birBookoluşturun. Öncelikle kullanıcının kitap ödünç alıp alamayacağını yazdırın, ardından kullanıcının kitabı ödünç almasını sağlayın (kitabı ödünç alınmış olarak işaretleyin ve kullanıcıya ekleyin). Son olarak kitabın kullanılabilirliğini ve ödünç alınan kitapların sayısını yazdırın.Çıktı biçimi:
Can borrow: [yes/no] Book available: [yes/no] Books borrowed: [count]
Kapsüllemenin dahili durumu nasıl koruduğuna dikkat edin: bir kitabın kullanılabilirliği yalnızca özel yöntemler aracılığıyla değişir ve kullanıcının ödünç aldığı kitaplar kontrollü erişim yoluyla yönetilir. Bu temel, bir sonraki adımda oluşturacağımız ödünç alma sistemini destekleyecek.
Kendin dene
<?php
require_once 'User.php';
// Girdileri oku
$userId = intval(trim(fgets(STDIN)));
$userName = trim(fgets(STDIN));
$bookIsbn = trim(fgets(STDIN));
$bookTitle = trim(fgets(STDIN));
$bookAuthor = "Unknown";
// TODO: Sağlanan id ve name ile bir User nesnesi oluştur
// TODO: Sağlanan isbn, title ve author ile bir Book nesnesi oluştur
// TODO: Kullanıcının başlangıçta ödünç alıp alamayacağını yazdır
// Format: "Can borrow: yes" or "Can borrow: no"
// TODO: Kullanıcının kitabı ödünç almasını sağla:
// - Kitabı ödünç alınmış olarak işaretle
// - Kitabı kullanıcının ödünç aldığı kitaplara ekle
// TODO: Kitabın müsaitliğini yazdır
// Format: "Book available: yes" or "Book available: no"
// TODO: Ödünç alınan kitapların sayısını yazdır
// Format: "Books borrowed: [count]"
?>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