Yönetici Arayüzü
Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 86 / 91.
Görev
KolayKütüphane Yönetim Sistemimizi yönetim yetenekleri ekleyerek genişletelim. Admin sınıfından miras alan, ancak kütüphanenin envanterini yönetmek için özel yetkilere sahip bir User sınıfı oluşturacaksınız: yeni kitaplar ekleme ve mevcut kitapları kaldırma.
Kodunuzu beş dosya boyunca düzenleyeceksiniz:
Book.php: readonly özelliklere (Book,isbn,title) sahipauthorsınıfınız, başlangıç değeri$isAvailableolan privatetrueözelliği ve şu metotlar:isAvailable(),markAsBorrowed()vemarkAsReturned().User.php: Book dosyasını dahil edin. readonly özelliklere (User,id) sahipnamesınıfınız, private bir$borrowedBooksdizisi, değeriMAX_BOOKSolan bir3sabiti ve şu metotlar:getBorrowedBooks(),canBorrow(),addBook(Book $book)veremoveBook(string $isbn).Library.php: User dosyasını dahil edin.Library,addBook(),findBook(),borrowBook()ve arama metotları da dahil olmak üzere mevcut işlevselliğe sahipreturnBook()sınıfınız. Yeni bir metot ekleyin:removeBook(string $isbn): void:unset()kullanarak koleksiyondan bir kitabı kaldırır
Admin.php: Library dosyasını dahil edin.Adminsınıfını genişleten birUsersınıfı oluşturun. Adminler tüm kullanıcı yeteneklerini miras alır, ancak iki yönetim metodu kazanır:addBookToLibrary(Library $library, Book $book): string: kitabı kütüphaneye ekler ve"Added: [title]"döndürürremoveBookFromLibrary(Library $library, string $isbn): string: şu kontrollerle bir kitabı kaldırmayı dener:- Kitap mevcut değilse
"Book not found"döndürür - Kitap şu anda ödünç alınmışsa
"Cannot remove: book is currently borrowed"döndürür - Aksi takdirde kitabı kaldırır ve
"Removed: [title]"döndürür
- Kitap mevcut değilse
main.php: Admin dosyasını dahil edin. İki girdi alacaksınız: bir ISBN ve bir kitap başlığı.ID değeri
Libraryve adıAdminolan bir1ve bir"AdminUser"oluşturun. Ayrıca ID değeriUserve adı2olan normal bir"RegularUser"oluşturun.Sağlanan ISBN, başlık ve
Bookyazarıyla bir"Test Author"oluşturun. Bu işlemleri gerçekleştirin ve her sonucu yeni bir satıra yazdırın:- Yöneticinin kitabı kütüphaneye eklemesini sağlayın
- Normal kullanıcının kitabı ödünç almasını sağlayın
- Yöneticinin kitabı kaldırmayı denemesini sağlayın (başarısız olmalı: kitap ödünç alınmış durumda)
- Normal kullanıcının kitabı iade etmesini sağlayın
- Yöneticinin kitabı kaldırmasını sağlayın (bu kez başarılı olmalı)
- Yöneticinin aynı kitabı tekrar kaldırmayı denemesini sağlayın (başarısız olmalı, kitap bulunamadı)
Bu görev, kalıtımın nasıl doğal bir hiyerarşi oluşturduğunu gösterir: yöneticiler, ek ayrıcalıklara sahip kullanıcılardır. removeBookFromLibrary içindeki güvenlik kontrolleri, hâlâ dolaşımda olan kitapların kaldırılmasını önleyerek veri bütünlüğünü sağlar.
Kendin dene
<?php
require_once 'Admin.php';
// Girdiyi oku
$isbn = trim(fgets(STDIN));
$title = trim(fgets(STDIN));
// TODO: Bir Library oluştur
// TODO: ID 1 ve adı "AdminUser" olan bir Admin oluştur
// TODO: ID 2 ve adı "RegularUser" olan normal bir User oluştur
// TODO: Sağlanan ISBN, title ve yazarı "Test Author" olan bir Book oluştur
// TODO: Bu işlemleri gerçekleştir ve her sonucu yeni bir satıra yazdır:
// 1. Admin'in kitabı kütüphaneye eklemesini sağla
// 2. Normal kullanıcının kitabı ödünç almasını sağla
// 3. Admin'in kitabı kaldırmayı denemesini sağla (başarısız olmalı - ödünç alınmış)
// 4. Normal kullanıcının kitabı iade etmesini sağla
// 5. Admin'in kitabı kaldırmasını sağla (şimdi başarılı olmalı)
// 6. Admin'in aynı kitabı tekrar kaldırmayı denemesini sağla (başarısız olmalı - bulunamadı)
?>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