Menu
Coddy logo textTech

Admin-Interface

Teil des Abschnitts Objektorientierte Programmierung der PHP-Journey von Coddy — Lektion 86 von 91.

challenge icon

Aufgabe

Einfach

Lassen Sie uns unser Bibliotheksverwaltungssystem erweitern, indem wir administrative Funktionen hinzufügen. Sie werden eine Admin-Klasse erstellen, die von User erbt, aber über besondere Befugnisse zur Verwaltung des Inventars der Bibliothek verfügt — das Hinzufügen neuer Bücher und das Entfernen vorhandener Bücher.

Sie werden Ihren Code über fünf Dateien organisieren:

  • Book.php — Ihre Book-Klasse mit Readonly-Eigenschaften (isbn, title, author), einer privaten $isAvailable-Eigenschaft, die als true beginnt, und den Methoden: isAvailable(), markAsBorrowed() und markAsReturned().
  • User.php — Binden Sie die Book-Datei ein. Ihre User-Klasse mit Readonly-Eigenschaften (id, name), einem privaten $borrowedBooks-Array, einer MAX_BOOKS-Konstante von 3 und den Methoden: getBorrowedBooks(), canBorrow(), addBook(Book $book) und removeBook(string $isbn).
  • Library.php — Binden Sie die User-Datei ein. Ihre Library-Klasse mit der vorhandenen Funktionalität, einschließlich addBook(), findBook(), borrowBook(), returnBook() und den Suchmethoden. Fügen Sie eine neue Methode hinzu:
    • removeBook(string $isbn): void — entfernt ein Buch aus der Sammlung unter Verwendung von unset()
  • Admin.php — Binden Sie die Library-Datei ein. Erstellen Sie eine Admin-Klasse, die User erweitert. Admins erben alle Benutzerfunktionen, erhalten aber zwei administrative Methoden:
    • addBookToLibrary(Library $library, Book $book): string — fügt das Buch der Bibliothek hinzu und gibt "Added: [title]" zurück
    • removeBookFromLibrary(Library $library, string $isbn): string — versucht, ein Buch mit diesen Prüfungen zu entfernen:
      • Wenn das Buch nicht existiert, geben Sie "Book not found" zurück
      • Wenn das Buch derzeit ausgeliehen ist, geben Sie "Cannot remove: book is currently borrowed" zurück
      • Andernfalls entfernen Sie es und geben Sie "Removed: [title]" zurück
  • main.php — Binden Sie die Admin-Datei ein. Sie erhalten zwei Eingaben: eine ISBN und einen Buchtitel.

    Erstellen Sie eine Library und einen Admin mit der ID 1 und dem Namen "AdminUser". Erstellen Sie außerdem einen regulären User mit der ID 2 und dem Namen "RegularUser".

    Erstellen Sie ein Book mit der angegebenen ISBN, dem Titel und dem Autor "Test Author". Führen Sie diese Operationen aus und geben Sie jedes Ergebnis in einer neuen Zeile aus:

    1. Lassen Sie den Admin das Buch zur Bibliothek hinzufügen
    2. Lassen Sie den regulären Benutzer das Buch ausleihen
    3. Lassen Sie den Admin versuchen, das Buch zu entfernen (sollte fehlschlagen — es ist ausgeliehen)
    4. Lassen Sie den regulären Benutzer das Buch zurückgeben
    5. Lassen Sie den Admin das Buch entfernen (sollte jetzt erfolgreich sein)
    6. Lassen Sie den Admin versuchen, dasselbe Buch erneut zu entfernen (sollte fehlschlagen — nicht gefunden)

Diese Herausforderung zeigt, wie Vererbung eine natürliche Hierarchie schafft — Admins sind Benutzer mit zusätzlichen Privilegien. Die Sicherheitsprüfungen in removeBookFromLibrary gewährleisten die Datenintegrität, indem sie das Entfernen von Büchern verhindern, die sich noch im Umlauf befinden.

Probier es selbst

<?php
require_once 'Admin.php';

// Eingabe lesen
$isbn = trim(fgets(STDIN));
$title = trim(fgets(STDIN));

// TODO: Eine Bibliothek erstellen

// TODO: Einen Admin mit der ID 1 und dem Namen "AdminUser" erstellen

// TODO: Einen regulären Benutzer mit der ID 2 und dem Namen "RegularUser" erstellen

// TODO: Ein Buch mit der angegebenen ISBN, dem Titel und dem Autor "Test Author" erstellen

// TODO: Diese Operationen ausführen und jedes Ergebnis in einer neuen Zeile ausgeben:
// 1. Den Admin das Buch zur Bibliothek hinzufügen lassen
// 2. Den regulären Benutzer das Buch ausleihen lassen
// 3. Den Admin versuchen lassen, das Buch zu entfernen (sollte fehlschlagen - es ist ausgeliehen)
// 4. Den regulären Benutzer das Buch zurückgeben lassen
// 5. Den Admin das Buch entfernen lassen (sollte jetzt erfolgreich sein)
// 6. Den Admin versuchen lassen, dasselbe Buch erneut zu entfernen (sollte fehlschlagen - nicht gefunden)

?>

Alle Lektionen in Objektorientierte Programmierung